I tried to catch 404 errors like this... But
- when i try to load http://localhost:11415/wfwe/wefwe/ - all good work.
- When i try to load http://localhost:11415/order/ - fail (with error The RouteData must contain an item named 'action' with a non-empty string value.)
- When i try to load http://localhost:11415/Images/ - fail with error File does not exist
My routes:
routes.Add("Order", new LowercaseRoute("Order/{action}/{id}",
new RouteValueDictionary(
new
{
controller = "Order",
action = "",
id = UrlParameter.Optional
}),
new MvcRouteHandler()));
routes.Add("NotFound", new LowercaseRoute("{*url}", new RouteValueDictionary(
new
开发者_C百科 {
controller = "Pages",
action = "Http404",
}),
new MvcRouteHandler()));
Why route NotFound - don't catch all 404 error. And When i try to upload to my hosting and try 404 i get this error (NotFound route not work at all) 404 - File or directory not found. The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.
I work with this all day, but nothig... please help me
When i try to load http://localhost:11415/order/ - fail (with error The RouteData must contain an item named 'action' with a non-empty string value.)
Because of this:
new { controller = "Order", action = "", id = UrlParameter.Optional }
You need to specify an action.
When i try to load http://localhost:11415/Images/ - fail with error File does not exist
If there is Images
folder on your server, then it will "intercept" requests not letting them through to the MVC pipeline.
I make this:
routes.Add("NotFound", new LowercaseRoute("{*url}", new RouteValueDictionary(
new
{
controller = "Pages",
action = "Http404",
}),
new MvcRouteHandler()));
and this in web.config
<customErrors mode="On">
</customErrors>
and
<modules runAllManagedModulesForAllRequests="true"/>
<handlers/>
<httpErrors>
<remove statusCode="404"/>
<error statusCode="404" path="/page/http404/" responseMode="ExecuteURL"/>
</httpErrors>
This works how i want.
精彩评论