Ошибки, выбрасываемые из компонента 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".