Как справиться с 404 ошибками - PullRequest
1 голос
/ 19 сентября 2011

Как я могу обработать ВСЕ 404 ошибки?

Если я зайду на страницу, которая не существует

Пример: http://www.example.com/Idontexist.aspx

Работает нормально ..

Однако, http://www.example.com/Nothere.nope или http://www.example.com/NotHere выдает ошибку 404.0, я думаю, это связано с тем, что .nope не зарегистрирован в IIS, но есть ли способ справиться с этим в web.config или в коде?

Ответы [ 3 ]

4 голосов
/ 19 сентября 2011

Это вероятно, потому что notthere.nope не проходит через .NET.В зависимости от версии и конфигурации IIS, ASP.NET используется только для выполнения запросов с определенными расширениями.

В идеале вам следует попробовать обработать 404 на уровне IIS - нет смысла позволять этому пузыриться, чтодалеко от стека приложений.Это была бы моя рекомендация.

Если вы действительно хотите, чтобы ASP.NET мог справиться с этим, вы можете. Если вы используете IIS 7, есть хорошая запись на это здесь .

Если вы используете IIS 6, вы можете использовать групповое сопоставление с расширением ISAPI, как описано здесь здесь .

0 голосов
/ 19 сентября 2011

оба.Самый простой способ - установить http://www.iis.net/download/urlrewrite и настроить его для перенаправления.Предполагая, что вам нужны всевозможные «интересные» URL, это будет проще всего.Часть web.config будет выглядеть так:

    <system.webServer>
      <rewrite>
        <rules>
          <rule name="My404" stopProcessing="true">
            <match url="^/Nothere\.nope" />
            <action type="Rewrite" url="/NotHere" />
          </rule>
        </rules>
      </rewrite>
    </system.webServer>
0 голосов
/ 19 сентября 2011

Вы можете, но вы должны сделать это на уровне сервера. В зависимости от версии вашего веб-сервера и / или IIS значения как , которые вы делаете, могут быть разными. К сожалению, я не могу дать вам ответ: «Иди, сделай это», и есть вероятность, что вам придется вносить изменения с течением времени и развитием серверных платформ.

...