2013-09-04 6 views
1

Мой WebAPI маршрут определяется следующим образом:Как отладить ошибку MVC3/WebAPI 404?

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/строить/модели/х/ан

[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/сборки/модели/x/

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

Все мои маршруты работают, кроме тех, которые были на этом единственном контроллере, которые работали до этого. Я, очевидно, что-то изменил, просто не могу понять, что.

+0

Try Web Api Маршрут отладчик http://blogs.msdn.com/b/webdev/archive/2013/04/04/debugging-asp-net-web-api-with-route-debugger.aspx , – sunil

+0

Он также может быть связан с вашим инжектором зависимости, если вы его используете. – sunil

ответ

1

Вы пытались активировать пользовательские ошибки?

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

Нет, это запрос AJAX, поэтому я не хочу перенаправлять. Кроме того, я использую NLog, HttpException, который я включил, был пойман ею, и HTML для [YSOD] (http://en.wikipedia.org/wiki/Screen_of_death) возвращается. – Terry

Смежные вопросы