我想创建带有2个参数的Web应用程序。将此代码添加到 RegisterRoutes 功能:
routes.MapRoute(
"pageroute",
"page/{pageid}/{pagename}",
new { controller = "page", action = "Index", pageid = "", pagename = "" }
);
并在 pageController :
中添加此方法 public ActionResult Index(int pageid,string pagename)
{
return View();
}
现在我使用此参数运行应用程序
http://localhost:1196/page/4/Pagename
应用程序成功运行但使用此参数运行时
http://localhost:1196/page/4/Pagename.html
应用程序返回404错误
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
在参数返回404错误中添加.html。的为什么吗
答案 0 :(得分:1)
因为默认情况下不通过MVC / IIS提供HTML文件。
您的应用会查找名为 Pagename.html 的物理文件,但无法在那里找到它。因此 - 404。
要使其正常工作,您需要设置IIS以捕获带有HTML扩展名的文件请求,并将此请求传递给MVC。
编辑:Here是一个类似的问题,其中OP通过切换管理管道模式"来找到解决方案。到"经典"。
答案 1 :(得分:0)
尝试将路线更改为:
routes.MapRoute(
"pageroute",
"page/{pageid}/{*pagename}",
new { controller = "page", action = "Index", pageid = "", pagename = "" }
);
这将匹配page/1/*
中的所有内容,因此.html
应通过此路线。
我无法重现.html文件使用与问题类似的方案给出404的问题,因此可能存在其他路由问题或IIS配置导致此问题。