C#Web API路由前缀

时间:2017-11-30 15:10:27

标签: c# asp.net-web-api

我有一个在WPF C#应用程序中运行的web api。我用Owin来实现它。如果我使用/api前缀发送请求,那么它就像我预期的那样工作。

http://localhost:8080/api/test/config?no=7

但是,我需要删除/ api前缀。如果我尝试下面的请求,当我尝试下面的示例代码时它不起作用。

http://localhost:8080/test/config?no=7

是否可以从请求中删除api字?

这是我的代码:

WebApp.Start<Startup>(url: "http://*:8080/");

    class Startup
    {
        Type ValuesControllerType = typeof(TestController);

        public void Configuration(IAppBuilder Builder)
        {
            var Instance = new HttpConfiguration();

            Instance.MapHttpAttributeRoutes();

            Instance.Routes.MapHttpRoute(
               name: "DefaultApi",
               routeTemplate: "{controller}/{action}/{request}",
               defaults: new { request = RouteParameter.Optional }
           );

            Builder.UseWebApi(Instance);
        }
    }

    [RoutePrefix("test")]
    public class TestController : ApiController
    {    
        [HttpGet]
        [Route("config")]
        public string Config(string No)
        {
            try
            {
                return No;
            }
            catch (Exception e)
            {
                return string.Empty;
            }
        }
    }

我在C# web api route for a webservice中尝试了答案,但没有效果。

我收到以下错误:

HTTP Error 503. The service is unavailable.

2 个答案:

答案 0 :(得分:1)

在Rest api上打开你的WebApiConfig.cs你应该找到以下代码:

[
    {
        foo: "A",
        bar: [
            { baz: "1", qux: "a" },
            { baz: "2", qux: "b" },
            { baz: "5", qux: "e" },
            { baz: "6", qux: "f" }
        ]
    },
    {
        foo: "B",
        bar: [
            { baz: "3", qux: "c" },
            { baz: "4", qux: "d" },
            { baz: "7", qux: "g" },
            { baz: "8", qux: "h" }
        ]
    }
]

尝试从那里删除api

答案 1 :(得分:0)

我在.Net Core 2 WebAPI项目中面临同样的问题

这是我的解决方案

[Produces("application/json")]
[Route("[controller]")]
public class DefaultController : Controller
{
    [Route("getUser")]

    public IActionResult GetUsers()
    {
         return Ok();
    }
}

地址为http://localhost:port/default/getuser