简体   繁体   中英

How 404 error asp.net mvc 2 IIS 7?

I tried to catch 404 errors like this... But

  1. when i try to load http://localhost:11415/wfwe/wefwe/ - all good work.
  2. 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 .)
  3. 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
                                                 {
                                                     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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM