Киньте 404 в c # чтобы перейти на customerror.aspx без 302 и 301 - PullRequest
0 голосов
/ 05 июня 2018

У меня есть пользовательские ошибки, заданные в web.config для ошибки 404 и в IIS.Моя пользовательская страница ошибок работает нормально.

Я хочу иметь возможность перейти на свою пользовательскую страницу ошибок из события загрузки страницы.

Если я выбрасываю 404, используя

throw new HttpException(404, "Not found");

Я попадаю на страницу пользовательских ошибок, но, глядя на ответы, получаю 302 найденных и 301 постоянных перенаправления, а затем сгенерированных 404.

Как удалить 302 и 301?

Я пробовал Response.Clear (), прежде чем выдать исключение, а также Response.StatusCode = 404.

1 Ответ

0 голосов
/ 05 июня 2018

По умолчанию при ошибке HTTP IIS будет перенаправлять с 302 на страницу ошибки.Вместо этого можно указать IIS переписать ответ с определенной страницей ошибки в web.config: с тегом customErrors:

<system.web>
    <customErrors redirectMode="ResponseRewrite">
        <error statusCode="404" redirect="~/Error404.aspx"/>
    </customErrors>
</system.web>

Это работает только со страницами aspx, а не с ASP.NET MVC

с тегом httpErrors:

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" path="/Error404.aspx" responseMode="ExecuteURL"/>
    </httpErrors>
</system.webServer>

С помощью httpErrors вы не можете использовать ~ / для ссылки на корень приложения, но он будет работать с /, если ваше приложение не размещено как подпрограммаприложение в IIS

...