Проблема после миграции с 2.2 на 3.0, по умолчанию работает, но не может получить доступ к области, есть ли способ отладить разрешение конечной точки? - PullRequest
0 голосов
/ 05 октября 2019

Сегодня я перенес приложение asp.net core 2.2 на 3.0, заняло немного времени, но все перекомпилируется, и передняя часть (по умолчанию) работает нормально, но я не могу получить доступ к задней части (отдельная область). Мои конечные точки указаны как таковые (более конкретные, во-первых, как рекомендует документация по миграции):

app.UseEndpoints(endpoints =>
            endpoints.MapAreaControllerRoute("areas", "areas", "{area:exists}/{controller=Home}/{action=Index}/{id?}");
            endpoints.MapControllerRoute("default","{controller=Home}/{action=Index}/{id?}");
        });

Это точная конфигурация, которую я имел с UseMVC и конечными точками, отключенными в 2.2

Доступ к любому URLв моей области (у меня есть только одна) / Back приводит к пустой странице

В окне вывода отладки нет абсолютно ничего ценного при работе в режиме отладки с подключенным отладчиком:

Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/2.0 GET https://localhost:44355/Back/  
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request finished in 10.9489ms 404 

Я нашел отладчик для маршрутов в https://haacked.com/archive/2008/03/13/url-routing-debugger.aspx/, но он датируется 2008 годом, поэтому я сомневаюсь, что он будет работать с маршрутизацией конечной точки.

Могу ли я что-нибудь сделать, чтобы проверить, что происходит в разрешении конечной точки?

Также просто для того, чтобы подтвердить, что это не проблема просмотра, не сбой в контроллере, когда я вручную захожу в / back / home / index, он никогда не переходит в соответствующую функцию (точка останова установлена ​​в первой строке)

1 Ответ

0 голосов
/ 06 октября 2019

Я исправил это, применив статический запуск URL вместо {area: существующие}, так как я обнаружил, что в примере в сети это не похоже на «чистое» исправление, но оно исправляет мою проблему, поэтому мое решениедолжен был перейти от

app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute("areas", "areas", "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapControllerRoute("default","{controller=Home}/{action=Index}/{id?}");
});

к

app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute("Back", "Back", "back/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapControllerRoute("default","{controller=Home}/{action=Index}/{id?}");
});

Также обратите внимание на то, что это вызвало проблему или оно уже существовало, но оно нарушило маршрутизацию идентификатора пользовательского интерфейса (только в этой области есть аутентификация, поэтомутеперь вместо пустой страницы я перенаправлен в / Identity / ... как и ожидалось, но эта страница теперь пуста)

...