Я хотел бы иметь 1 страницу ошибки, которая в зависимости от предоставленной строки запроса отображает для пользователя немного другое сообщение об ошибке.
Я заметил следующий код в файле Startup.cs при создании нового проекта asp.net 5.
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
Я смог заставить это отображать правильную страницу ошибки при возникновении исключения. Моя проблема в том, что он, кажется, только улавливает ошибки, которые не были обработаны в моем приложении, то есть всегда с кодом состояния 500
. Это правильно?
Для обработки ошибок 404
я использую следующий код:
app.UseStatusCodePagesWithReExecute("/Error/{0}");
С моим контроллером, реализованным как:
[HttpGet("{statusCode}")]
public IActionResult Error(int statusCode)
{
return View(statusCode);
}
Кажется, это улавливает ошибки 404
и отображает правильный код состояния.
Если я обновлю свой код в приведенном выше операторе if, чтобы использовать то же действие, например:
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error/{0}");
}
Возвращаемый код состояния всегда равен 0.
Кроме того, что произойдет, когда произойдет 400
, 403
или любое другое событие? Будут ли они пойманы? Если да, то в какой момент они будут пойманы?
Как вы можете сказать, я очень запутался и хотел бы, чтобы кто-нибудь предоставил мне пример, где обрабатываются все различные коды состояния.
UseExceptionHandler
? - person Mairaj Ahmad   schedule 01.02.2016