【发布时间】:2012-01-01 14:52:27
【问题描述】:
配置 IIS 6.0 以运行 MVC3 应用程序
我认为我的 IIS 6 服务器存在配置问题,我想看看是否有遗漏的地方。
我遇到的问题是任何时候当 RedirectToAction("Index", "Home") 被执行时(例如在返回 ActionResult 的方法中)我希望我会被退回:
http://servername.domain.com/virtualdirectoryname
但是,我被重定向到:
http://servername.domain.com/virtualdirectoryname/virtualdirectoryname
这是附加到 URL 末尾的虚拟目录名称的第二个实例,无法弄清楚原因 - 此 URL 当然会产生 404 资源未找到错误。我在公司 Intranet 和公共 Internet 环境中编写和部署了几个 MVC3 应用程序,但无法弄清楚我做错了什么。我的 global.asax.cs 似乎没问题 -
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity is FormsIdentity)
{
FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;
// Get the stored user-data, in this case, our roles
string userData = ticket.UserData;
string[] roles = userData.Split(',');
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
}
}
}
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
Application_AuthenticateRequest 处理登录用户的角色存储,但除此之外,它看起来很普通。我能想到的唯一想法是我弄乱了虚拟目录。
在执行这些步骤之前,我已经验证了 MVC3 和 v4.0 的 .NET 框架已安装在服务器上。此服务器上还有其他 ASP.NET 4.0 应用程序一直在正常运行。还有一个 MVC2 应用程序(也安装了 MVC2)在这台服务器上运行,并且一直在运行,没有发生任何事故。
- 我使用 IIS 管理器从主“默认站点”创建了一个虚拟目录。
- 为此虚拟目录指向的文件夹设置适当的权限。使用快速的“Hello, World”index.html 文件进行测试。
- 将应用程序从我的开发 PC 复制到 #2 中描述的文件夹中,该应用程序在该应用程序中工作。
- 更新了 Web.Config 文件,编辑连接字符串以指向测试数据库服务器;我还在我的开发 PC 上验证了这些连接字符串。
- 打开网络浏览器,希望一切顺利。
非常感谢任何帮助。
谢谢!
【问题讨论】:
标签: asp.net-mvc-3 iis-7 iis-6