ASP.NET MVC 3:将应用程序移入虚拟目录。 我需要改变什么?

伙计们,

我一直在研究MVC 3应用程序。 我使用的是VS 2010的内置Web服务器。 今天,出于各种原因,我被要求将其移入虚拟目录并在IIS 7下运行,仍在我的开发PC上。

现在它的URL是“localhost / MyVirtualDirectory”,而不是“localhost:12345”,我需要更改哪些路由才能工作,以及在哪里?

我没有使用任何原始的HTML定位标记或重定向,只是@ Html.ActionLink等。 根据我读过的内容,如果我一直在做MVC方式,这个改变应该是透明的。

但在开始时,认证后重定向失败。 在成功认证时,它应该返回结果

this.RedirectToAction("index", "Home")

你猜对了:而不是“/ MyVirtualDirectory / Home”,重定向转到“/ Home”。 哪个失败。

所以缺少一些需要设置的东西。 它是什么?

谢谢,所有。


在IIS中,选择您的虚拟目录并“转换为应用程序”。 另外,如果您在Global.asax中使用默认路由映射,它应该读取如下所示的内容:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

推理:如果你把你的MVC应用程序放在另一个应用程序的子目录中,那么IIS将会考虑其他应用程序的根目录,而不是你的MVC应用程序的根目录。 如果那是你想要的行为(不太可能),那么你需要修改你的Global.asax来考虑这一点:

routes.MapRoute(
    "Default", // Route name
    "MyVirtualDirectory/{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
链接地址: http://www.djcxy.com/p/9919.html

上一篇: ASP.NET MVC 3: Moved app into virtual directory. What do I have to change?

下一篇: A generic class with two non