如何调试MVC3/WebAPI路由404错误

本文关键字:WebAPI 路由 错误 MVC3 何调试 调试 | 更新日期: 2023-09-27 18:30:09

我的WebAPI路由定义如下:

config.Routes.MapHttpRoute(
  name: "BuildModels",
  routeTemplate: "api/build/models/{productLine}/{language}",
  defaults: new { controller = "Build", action = "GetModels" }
);

控制器:

public class BuildController : ApiController
{
    public async Task<HttpResponseMessage> GetModels(string productLine, string language)
    {
        // Omitted for brevity, I don't feel it's pertinent
        // but if you disagree I will fill this in.  
        // Nothing has changed in here and it worked before.
        return await ...;
    }
}

/api/build/models/x/en

[HttpException]: The controller for path &#39;/api/build/models/x/en&#39; was not found or does not implement IController.
   at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
   at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName)
   at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
   at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

/api/build/models/x/

{"Message":"The arguments value is not valid : {language}"}

我的所有路线都在工作,除了这个控制器上的路线,它们以前也在工作。我显然改变了一些东西,只是不知道是什么。

如何调试MVC3/WebAPI路由404错误

您是否尝试过激活自定义错误?

<customErrors mode="On" defaultRedirect="/customerrors/500.aspx">
    <error statusCode="404" redirect="/customerrors/404.html" />
    <error statusCode="403" redirect="/customerrors/403.html" />
</customErrors>