Почему мое основное приложение ASP.NET разрывается только при вызове PUT? - PullRequest
0 голосов
/ 24 августа 2018

Когда клиент нажимает конечную точку PUT на моем веб-API, и эта конечная точка создает какие-либо исключения, весь Kestrel выходит из строя.

Visual Studio печатает:

Приложение находится в режиме перерыва

Ваше приложение вошло в состояние останова, но нет кода для показа, потому что все потоки выполняли внешний код (обычно системный или структурный код).

После того, как я нажму Продолжить выполнение Приложение закрывается с сообщением:

Программа '[5364] dotnet.exe' завершила работу с кодом 0 (0x0).

Интересно то, что если я делаю то же самое с конечной точкой POST, исключение попадает в мой ExceptionFilter или мой ErrorHandlingMiddleware (как я пробовал оба с одинаковым успехом), и приложение продолжает работать, как и ожидалось.

Так что это пойман:

[HttpPost]
public async void Post(SomeModel model)
{
   throw new Exception();
}

Пока это закрывает приложение:

[HttpPut]
public async void Put(SomeModel model)
{
   throw new Exception();
}   

Я пытался очистить кэш Nuget, удалить папку bin, запустить приложение на Mac и в Windows, обновить .net Core SDK и Runtime и, возможно, несколько других вещей, которые я нашел в сети для смутно похожих проблем, но безуспешно.

Мое приложение работало на Kestrel, .NET Core SDK 2.1.302, время выполнения 2.1.2. С тех пор я обновился до .NET Core SDK 2.1.401, Runtime 2.1.3, но это не имело никакого значения. Та же самая история запуска его на IIS Express

...