Невозможно отобразить подробную ошибку запуска с Blazor

В моем приложении Blazor-server одна из внедренных служб выполнит некоторую проверку системы и выдаст исключение, если проверка не удалась. План состоит в том, чтобы использовать это исключение, чтобы напомнить программистам, что для правильной работы приложения необходимо определенное условие. Однако Blazor просто показывает

Ошибка: не удалось инициализировать схему.

в консоли браузера, и нигде нет сообщения о моем исключении. Кроме того, Visual Studio не нарушает мое исключение в режиме отладки с настройками нарушения по умолчанию, предположительно из-за того, что Blazor перехватил мое исключение. Поэтому единственный способ, который я нашел до сих пор, который может отображать мое исключение, - это изменить параметр прерывания на «прерывание всех исключений времени выполнения», но я не думаю, что это достаточно хорошо, поскольку будущие программисты в этом проекте могут этого не знать. .

Итак, есть ли способ настроить Blazor для отображения сведений об исключении при запуске или для прекращения перехвата моих исключений? я пробовал

services.AddServerSideBlazor(options => {
    options.DetailedErrors = true;
});

но это не помогает. Я не думаю, что это имеет отношение к моему делу.


person Mu-Tsun Tsai    schedule 13.05.2020    source источник


Ответы (1)


Один из способов сделать это - добавить пользовательский код в ваш Startup.cs файл прямо в конце вашего Configure метода. К тому моменту, когда последовательность запуска заходит так далеко, все ваши службы должны быть зарегистрированы, включая службу тестирования. Чтобы получить доступ к методу Configure, сначала необходимо добавить тип службы и имя переменной в сигнатуру метода, а затем вызвать свои методы в службе в конце метода. См. ниже:

public void Configure(IApplicationBuilder app, ...other things,  ITestingService testService)
{
    // all your other startups configs

    testService.RunTestMethods();
}

ITestingService представляет вашу услугу по проверке. Инфраструктура DI определит, что вам нужна эта услуга в методе Configure, и предоставит вам ее экземпляр, а затем вы сможете выполнять любые нужные вам методы, генерировать или распространять исключения и регистрировать их при необходимости и т. Д., Ключ здесь - что если вы выбросите исключение до конца метода Configure, приложение не запустится, поэтому убедитесь, что вы вошли в систему, даже если это консольный журнал, чтобы ругать разработчика в интерфейсе командной строки, что им нужно что-то исправить.

person Nik P    schedule 14.05.2020
comment
Это один из возможных способов; однако в моем случае я фактически пишу библиотеку для применения другими программистами. Если они знают, что они должны добавить этот фрагмент кода, они могут просто удовлетворить условия в первую очередь. Можно ли добиться того, чего я хочу, при условии, что программисты, использующие мою библиотеку, не делают ничего, кроме регистрации службы? - person Mu-Tsun Tsai; 15.05.2020