MVC 5 HttpErrors + Controller/Action

2019-06-17 01:57发布

问题:

How can I change error path to my controller/action with httpErrors?

I have this code:

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

But it doesn't work. Empty page shows and action not entered.

What i do wrong?

P.S. I know about another way to sovle custom page errors. But i want try to use it.

Thanks!

回答1:

I resolve a problem. This code of web.config works:

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

Now entered in ErrorsController/NotFound action(marked with routing atribute ActionName to 404).



回答2:

Why dont you simply redirect the url for 404

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


回答3:

If Sergey Shoshin's answer does not work.

<httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="404"/>
      <error statusCode="404" responseMode="ExecuteURL" path="[optional virtual directories...]/Error/404"/>
</httpErrors>