iman mir
iman mir

Reputation: 241

ASP.net MVC 5 Route with two parameter

I want create web application with 2 parameter. Add this Code to RegisterRoutes function:

routes.MapRoute(
               "pageroute",                                              
               "page/{pageid}/{pagename}",                          
               new { controller = "page", action = "Index", pageid = "", pagename = "" } 
           );

and add this method in pageController:

  public ActionResult Index(int pageid,string pagename)
        {
            return View();
        }

Now when i running application with this parameter

http://localhost:1196/page/4/Pagename

Application run successfully but when running with this parameter

http://localhost:1196/page/4/Pagename.html

Application return 404 error

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

while add .html in parameter return 404 error. why?

Upvotes: 1

Views: 284

Answers (2)

anar khalilov
anar khalilov

Reputation: 17498

Because by default HTML files are not being served through MVC/IIS.

Your application looks for a physical file named Pagename.html and cannot find it there. Hence - 404.

To make it work, you need to setup your IIS to catch requests for files with HTML extension and pass this request to MVC.

EDIT: Here is a similar question where OP found a solution by switching "Managed Pipeline Mode" to "Classic".

Upvotes: 1

fdomn-m
fdomn-m

Reputation: 28611

Try changing the Route to:

routes.MapRoute(
           "pageroute",                                              
           "page/{pageid}/{*pagename}",                          
           new { controller = "page", action = "Index", pageid = "", pagename = "" } 
       );

This will then match everything as in page/1/* so the .html should go via this route.

I was unable to reproduce an issue where a .html file gave a 404 using a scenario similar to the question, so there may be some other routing issue or IIS configuration causing this.

Upvotes: 0

Related Questions