[英]WebApi - Response status code does not indicate success: 404 (Not Found)
[英]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.