Evi*_*ndy 10 c# model-view-controller asp.net-mvc iis-5
我在Global.asax.cs中有以下内容
routes.MapRoute(
"Arrival",
"{partnerID}",
new { controller = "Search", action = "Index", partnerID="1000" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
Run Code Online (Sandbox Code Playgroud)
我的SearchController看起来像这样
public class SearchController : Controller
{
// Display search results
public ActionResult Index(int partnerID)
{
ViewData["partnerID"] = partnerID;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
和Index.aspx目前只显示ViewData ["partnerID"].
我在Windows XP上的IIS中设置了一个名为Test的虚拟目录.
如果我将浏览器指向http:// localhost/Test /,那么我会按预期显示1000.但是,如果我尝试http:// localhost/Test/1000我得到一个页面未找到错误.有任何想法吗?
在虚拟目录中运行MVC有什么特殊注意事项吗?
IIS 5.1 解释您的 url,以便在名为 Test 的文件夹下查找名为 1000 的文件夹。为什么会这样?
\n\n\n\n\n发生这种情况的原因是,当 IIS 6 在映射到 aspnet_isapi.dll 的 URL 中看到\n \xe2\x80\x9c 文件扩展名\xe2\x80\x9d 时,\n 才会调用 ASP.NET(其中 \xe2\x80\x99s\n是负责调用 ASP.NET 的 C/C++ ISAPI 过滤器。由于路由是一个名为 UrlRoutingModule 的 .NET IHttpModule,因此它不会被调用,除非 ASP.NET 本身被调用,而这种情况仅在 aspnet_isapi.dll 被调用时才会发生,而 ASP.NET 本身则被调用。仅当 URL 中有\xe2\x80\x99s .aspx 时才会发生。因此,没有 .aspx,没有\n UrlRoutingModule,因此出现了 404。
\n
最简单的解决方案是:
\n\n\n\n\n如果您不介意在 URL 中包含 .aspx,只需浏览您的路由配置,在每个模式中的正斜杠之前添加 .aspx。例如,使用\n {controller}.aspx/{action}/{id} 或\n myapp.aspx/{controller}/{action}/{id}。\n Don\xe2\x80\x99t put .aspx 在大括号参数名称中,或在 \xe2\x80\x98default\xe2\x80\x99 值中,因为它实际上是控制器名称的一部分 -\ n it\xe2\x80\x99s 只是在 URL 中满足 IIS。
\n
来源: http: //blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/
\n