AspNetCore .... Micro frontend / Composite UI - ViewComponent - вместо ошибки возвращается ошибка - PullRequest
0 голосов
/ 06 февраля 2020

Я создаю свой веб-сайт в режиме микро-интерфейса (составного пользовательского интерфейса).

Моя архитектура:

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);

перенаправить меня на другую страницу ....

если я это прокомментирую .... теперь исключение бросает ....

Так что любая идея, как я могу заменить э или к пользовательскому виду компонента?

Спасибо

...