Решено!По неизвестной мне причине конвейер MVC требует defaultRedirect
для указания на файл .html
:
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error.html">
Добавление Response.ContentType = "text/html";
в Global.asax.cs
позволяет избежать известной проблемы, когда страница ошибки отображается кактекст:
protected void Application_Error()
{
var exception = Server.GetLastError();
if (exception is HttpException httpException)
{
Response.ContentType = "text/html";
Response.StatusCode = httpException != null ? httpException.GetHttpCode() : (int)HttpStatusCode.InternalServerError;
}
}
Кроме того, Response.StatusCode
гарантирует, что правильный код ошибки HTTP достигнет клиента (например, 400, 503 и т. д.) вместо 200.
С этими 2 блокамив web.config
и global.asax.cs
и без изменений в IIS, http://localhost:52200/<
и http://localhost:52200/<a
теперь возвращают HTTP 400 Bad Request
и отображают Error.html
, как и ожидалось.