Назад | Перейти на главную страницу

Принуждение IIS возвращать 404 вместо 403

Запуская IIS 10, на котором размещено приложение .NET MVC 5, я получаю разные ошибки в зависимости от URL-адреса:

https://example.com/myapplication/thisDoesNotExist -- returns my custom 404 (what I want)
https://example.com/myapplication/thisDoesNotExist+Either - returns a 403 (it needs to be 404)

https://example.com/myapplication/scripts/ -- this does exist and returns my custom 404 (what I want)
https://example.com/myapplication/bin/ -- this does exist but returns a 403 (it needs to be a 404)

Я немного потерялся и крутит колеса, пытаясь понять это. Я действительно не понимаю, почему каталог bin должен быть 403, но скрипты правильно перенаправлены на 404.

Я нашел пару сообщений, в одном из них предлагалось добавить это в web.config приложения:

<add name="StopDirectoryBrowsing" path="*." resourceType="Directory" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

Это не имеет значения.

Мои пользовательские правила ошибок выглядят так:

<system.web>
 <customErrors mode="On" redirectMode="ResponseRewrite" allowNestedErrors="false">
      <error statusCode="403" redirect="~/403.aspx" />
      <error statusCode="404" redirect="~/404.aspx" />
      <error statusCode="500" redirect="~/500.aspx" />
    </customErrors>
</system.web>

<system.webServer>
    <httpErrors errorMode="Custom">
      <remove statusCode="403" />
      <remove statusCode="404" />
      <remove statusCode="500" />
      <error statusCode="403" path="/403.aspx" responseMode="ExecuteURL" />
      <error statusCode="404" path="/404.aspx" responseMode="ExecuteURL" />
      <error statusCode="500" path="/500.aspx" responseMode="ExecuteURL" />
    </httpErrors>
</system.webServer>

Есть ли способ обойти это?