Есть ли способ отладить маршрут в ASP. МВК5?

В прошлом я использовал некоторый код, кажется, Скотта Хансельмана из Microsoft. Однако теперь я использую MVC5 и не думаю, что этот код больше действителен.

Есть ли способ отследить маршруты, пройденные в MVC5, чтобы узнать, почему я вижу такие сообщения, как:

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

person Community    schedule 27.09.2013    source источник


Ответы (2)


Я знаю, что уже поздно для OP, но для всех, кто пытается отлаживать ошибки 404, я нашел способ перехватить результат маршрута и понять, почему ему не удается найти ресурс.

В Global.asax.cs переопределите Init следующим образом:

    public override void Init()
    {
        base.Init();
        this.AcquireRequestState += showRouteValues;
    }

    protected void showRouteValues(object sender, EventArgs e)
    {
        var context = HttpContext.Current;
        if (context == null)
            return;
        var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context));
    }

Переменная routeData будет содержать информацию о маршруте по мере ее интерпретации. Я тестировал это на MVC5.

Первоначально я столкнулся с этим методом в другом ответе Пола Эванса, это ссылка (спасибо @porcus за ее поиск): stackoverflow.com/a /25466524

person c0y0teX    schedule 10.06.2015
comment
Вот ссылка на другой ответ SO, из которого вы, возможно, получили этот фрагмент кода: stackoverflow.com/a/25466524 И я хвалю вас за попытку указать авторство. - person porcus; 12.03.2016
comment
@porcus, это действительно оригинальный ответ, я обновлю свой ответ, чтобы дать ссылку на него, спасибо. - person c0y0teX; 23.03.2016

Взгляните на Glimpse. Один из модулей, с которым он поставляется, — это модуль Routes, который позволит вам увидеть подробную информацию о маршрутах, которые были проверены, значениях, которые были переданы, и какие из них совпали (если есть).

person Cloud SME    schedule 27.09.2013
comment
Это хорошо, если мой маршрут совпадает с каким-то контроллером, но как отлаживать маршруты, которые приводят к ошибке 404? - person Adrian Grigore; 12.12.2014
comment
@AdrianGrigore, посмотрите ответ, который я добавил, он может помочь вам с ошибкой 404. - person c0y0teX; 10.06.2015
comment
Glimpse на самом деле не поможет, если маршрутизация пойдет не так, и вы попытаетесь выяснить, почему. - person Ole Albers; 03.11.2017