Я создаю свой веб-сайт в режиме микро-интерфейса (составного пользовательского интерфейса).
Моя архитектура:
AspNetCore MVC Project
- в качестве основной оболочки ...
Некоторые **ABC.dll**
библиотека классов, которая содержит ViewComponent
И я использую Razor runtime load
для подключения всех этих библиотек к главной оболочке.
В *.cshtml
Я называю это ViewComponents
как:
@await Component.InvokeAsync("my.namespace.abc.test")
И если в моих dll есть этот компонент - он хорошо показывает на странице .......
Теперь, если я попробую позвонить
@await Component.InvokeAsync("my.namespace.abc.page_that_not_exist_in_my_dlls")
И это не существует в моих dll - ошибка при запуске приложения loke viewcomponent не найден, et c ....
Теперь я хочу перехватить эту ошибку и вернуть мою пользовательскую ошибку ViewComponent (которая существует приложение Main Wrapper).
Что я пробовал:
ExceptionMiddleware
public class ExceptionMiddleware
{
RequestDelegate _next;
public ExceptionMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
try
{
//await _next(context);
}
catch (Exception ex)
{
await WriteMessage(context, ex); // Await.
}
}
private async Task WriteMessage(HttpContext context, Exception ex) // Return a Task.
{
var t = ex.GetType();
context.Response.ContentType = "application/json";
context.Response.StatusCode = (int)HttpStatusCode.OK;
await context.Response.WriteAsync("hello");
return;
}
}
Сообщение возвращено. ... но это:
await _next (context);
перенаправить меня на другую страницу ....
если я это прокомментирую .... теперь исключение бросает ....
Так что любая идея, как я могу заменить э или к пользовательскому виду компонента?
Спасибо