Ошибки, выбрасываемые из компонента View, не отображают страницу ошибок

У меня есть приложение Asp.Net Core 2.0, которое настроено для отображения страницы ошибок в Production или использования DeveloperExeptionPage.

Если я выбрасываю ошибку непосредственно из контроллера, это работает нормально. Однако, если я выбрасываю ошибку из ViewComponent, она не работает. Я получаю пустую страницу в браузере, и когда я просматриваю Инструменты разработчика в Chrome, запрос страницы просто говорит, что в консоли указано "сбой" и "GET (page url) 200 ()".

В IE я получаю "Эта страница не может быть отображена" с "Код ошибки: INET_E_DOWNLOAD_FAILURE"

Любая помощь будет оценена.

1 ответ

Трудно понять, что происходит не так, не видя класс вашего ViewComponent и как вы вызываете свой компонент представления.

При этом, следующее работает в совершенно новом приложении, созданном с dotnet new mvc (и версия 2.1.3 SDK).

. \ Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseExceptionHandler("/Home/Error");
    app.UseMvcWithDefaultRoute();
}

. \ Views \ Shared \ Components \ FooBar \ Default.cshtml

<p>FooBarViewComponent</p>

. \ Views \ Home \ Index.cshtml

@await Component.InvokeAsync("FooBar")

. \ FooBarViewComponent.cs

public class FooBarViewComponent : ViewComponent {
    public async Task<IViewComponentResult> InvokeAsync() {
        throw new System.Exception("Exception in FooBar");
        await Task.Delay(0);
        return View();
    }
}

Переход на домашнюю страницу надежно отображает представление "/Home/Error".

Другие вопросы по тегам