2013-11-21 2 views
7

Как я могу изменить путь ошибки к моему контроллеру/действию с httpErrors?MVC 5 HttpErrors + Controller/Action

У меня есть этот код:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404"/> 
    <error responseMode="ExecuteURL" statusCode="404" path="Error/HttpRequestError"/> 
</httpErrors> 

Но это не работает. Показы не отображаются и действия не введены.

Что я делаю неправильно?

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

Спасибо!

ответ

12

я решить проблему. Этот код работает web.config:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404"/> 
    <error statusCode="404" responseMode="ExecuteURL" path="/Error/404"/> 
</httpErrors> 

Теперь вошел в ErrorsController/NotFound действия (отмечены маршрутизации atribute ActionName к 404).

+0

Обратите внимание, что «ExecuteURL» чувствителен к регистру! – Jester

+0

Этот подход не работает для меня. Я получаю ASP.net «Ресурс не найден». страница ошибки. Я могу напрямую получить доступ к странице/Error/404. Я пробовал в IIS Express и IIS. Какие-нибудь советы? – Sean

+0

@Sean Это правильно, но важно отметить, что он не будет работать, если у вас есть путь к виртуальному каталогу, или вы также должны его заполнить. Я не знал этого, поэтому потребовалось много часов, чтобы понять, почему я не мог заставить его работать. – XzaR

1

Почему бы вам не просто перенаправить URL для 404

<customErrors mode="RemoteOnly" defaultRedirect="~/error"> 
    <error statusCode="404" redirect="~/Error/HttpRequestError" />  
</customErrors 
+2

Дополнительный перенаправление вреден для генерального директора. –

+0

@SergeyShoshin, что такое генеральный директор? вы ссылаетесь на SEO? –

+0

О, извините. Ровно SEO. –

1

Если ответ Сергея Шошина не работает.

<httpErrors errorMode="Custom" existingResponse="Replace"> 
     <remove statusCode="404"/> 
     <error statusCode="404" responseMode="ExecuteURL" path="[optional virtual directories...]/Error/404"/> 
</httpErrors> 
Смежные вопросы