我有一个运行小型Web API的.NET Core应用程序。
以下路线没有任何麻烦。
[HttpGet("api/voting/{id:int}")]
[Produces("application/json")]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(Voting))]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
public async Task<IActionResult> GetByIdAsync([FromRoute] int id)
{
// Left out for the sake of brevity ...
}
[HttpGet("api/voting/{slug:regex(\\w+)}/full")]
[MapToApiVersion("1.0")]
[Produces("application/json")]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(Voting))]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
public async Task<IActionResult> GetBySlugAsync([FromRoute] string slug)
{
// Left out for the sake of brevity ...
}
Requested URL
内附加了80
端口,我不太明白,因为我只通过https与服务进行通信。可能是正则表达式干扰了端口后缀吗?Physical Path
将路线附加到wwwroot
目录。这是否意味着路线无法正确解决?
提前致谢!404错误可能是由路由问题引起的。由于您正在为Web API使用route属性。请确保GlobalConfiguration.Configure(WebApiConfig.Register);
高于其他代码。
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
并且config.MapHttpAttributeRoutes();
代码高于其他路由配置。
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "versionApi",
routeTemplate: "api/{version}/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
此外,尝试删除Controller中的以下代码,以测试它是否与从属注入模块相关。
[Dependency]
public IConfigurationServicev2 configurationService { get; set; }
[Dependency]
public IAccountService accountService { get; set; }
如果它也不适合你。在IncludeErrorDetailPolicy
类中设置WebApiConfig
属性后,您可以从Web服务器获取详细错误消息。
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;