簡體   English   中英

WebApi路由導致404(未找到)響應

[英]WebApi Routing causes 404 (Not Found) response

因此,這很簡單。 我過去曾經做過。 但是,似乎我缺少了一些東西。

WebApiConfig.cs

public static void Register(HttpConfiguration config)
{
    // Attribute routing.
    config.MapHttpAttributeRoutes();
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

Global.asax.cs

protected void Application_Start(object sender, EventArgs e)
{
    GlobalConfiguration.Configure(WebApiConfig.Register);
    AreaRegistration.RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

SomeController.cs

[RoutePrefix("api")]
public class SomeController: ApiController
{
    [Route("some")]
    [HttpGet]
    private HttpResponseMessage GetSome(HttpRequestMessage request)
    {
        ...
    }
}

現在,當我呼叫: http://localhost:54699/api/some ,我得到以下404

{“ Message”:“未找到與請求URI'http:// localhost:54699 / api / some '匹配的HTTP資源。”,“ MessageDetail”:“未找到與名為'some'的控制器匹配的類型。 “ }

資料夾結構:

在此處輸入圖片說明

為什么您的控制器方法是私有的,這應該是公開的

[RoutePrefix("api")]
public class SomeController: ApiController
{
    [Route("some")]
    [HttpGet]
    public HttpResponseMessage GetSome(HttpRequestMessage request)
    {
    ...
    }
}

嘗試移動GlobalConfiguration.Configure(WebApiConfig.Register); 在MVC的FilterConfig 這是WebAPI屬性路由的標准警告。

您的路由配置文件中包含/ api。

您已經提到/ api作為控制器的路由前綴,然后操作就“有些”了。

uri到“一些”應該是

http://localhost:<port>/api/api/some
[RoutePrefix("api/some")]
public class SomeController: ApiController
{
    [HttpGet]
    public HttpResponseMessage GetSome(HttpRequestMessage request)
    {
    ...
    }
}

您的方法GetSome是私有的。 另外,我將像代碼片段中一樣修改RoutePrefix屬性,以避免在每個方法上重寫Route屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM