Asp.net mvc 3 配置IIS 6.0以运行MVC3应用程序

Asp.net mvc 3 配置IIS 6.0以运行MVC3应用程序,asp.net-mvc-3,iis-7,iis-6,Asp.net Mvc 3,Iis 7,Iis 6,配置IIS 6.0以运行MVC3应用程序 我想我的IIS 6服务器有一个配置问题,我想看看我是否遗漏了什么 我遇到的问题是,每当执行RedirectToAction(“索引”、“主页”)时(例如,在返回ActionResult的方法中),我都希望返回到: http://servername.domain.com/virtualdirectoryname 但是,我被重定向到: http://servername.domain.com/virtualdirectoryname/virtualdir

配置IIS 6.0以运行MVC3应用程序

我想我的IIS 6服务器有一个配置问题,我想看看我是否遗漏了什么

我遇到的问题是,每当执行RedirectToAction(“索引”、“主页”)时(例如,在返回ActionResult的方法中),我都希望返回到:

http://servername.domain.com/virtualdirectoryname
但是,我被重定向到:

http://servername.domain.com/virtualdirectoryname/virtualdirectoryname
这是附加到URL末尾的virtualdirectoryname的第二个实例,无法找出原因-此URL当然会产生404 resource not found错误。我在公司内部网和公共互联网环境中编写并部署了几个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);
    }
}
应用程序_AuthenticateRequest处理已登录用户的角色存储,但除此之外,它似乎相当普通。我唯一能想到的就是我把虚拟目录搞砸了

在执行这些步骤之前,我已经确认服务器上安装了.NET framework的MVC3和v4.0。此服务器上还有其他ASP.NET 4.0应用程序一直在正常运行。还有一个MVC2应用程序(也安装了MVC2)正在该服务器上运行,并且一直在运行,没有发生任何事件

  • 我使用IIS管理器在主“默认站点”之外创建了一个虚拟目录
  • 在此虚拟目录指向的文件夹上设置适当的权限。使用一个快速的“Hello,World”index.html文件进行测试
  • 将应用程序从我的开发PC复制到#2中所述的文件夹中
  • 更新了Web.Config文件,编辑连接字符串以指向测试数据库服务器;我还在我的开发PC上验证了这些连接字符串
  • 打开网络浏览器,希望一切顺利
  • 非常感谢您的帮助


    谢谢

    我想你可能看到的是:

    http://servername.domain.com/virtualdirectoryname/applicationname
    
    如果您将虚拟目录命名为与应用程序相同的名称,那么我可以看出这会使您感到困惑。如果您没有虚拟目录,而您的应用程序仅位于默认网站的根目录,您将看到:

    http://servername.domain.com/applicationname
    

    您的虚拟目录是否与应用程序名称相同?如果是这样的话,这就是你看到这个的原因。

    我想你可能看到的是:

    http://servername.domain.com/virtualdirectoryname/applicationname
    
    如果您将虚拟目录命名为与应用程序相同的名称,那么我可以看出这会使您感到困惑。如果您没有虚拟目录,而您的应用程序仅位于默认网站的根目录,您将看到:

    http://servername.domain.com/applicationname
    

    您的虚拟目录是否与应用程序名称相同?如果是这样,这就是为什么您会看到这一点。

    但问题是导致404 resource not found错误。在IIS中转到您的应用程序,右键单击它并选择“浏览”。浏览器中的URL是什么样子的?servername.domain.com/virtualdirectoryname/virtualdirectoryname但问题是导致404 resource not found错误。转到IIS中的应用程序,右键单击它并选择“浏览”。浏览器中的URL是什么样子的?servername.domain.com/virtualdirectoryname/virtualdirectoryname