【问题标题】:Configuring IIS 6.0 to run an MVC3 application配置 IIS 6.0 以运行 MVC3 应用程序
【发布时间】: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)在这台服务器上运行,并且一直在运行,没有发生任何事故。

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

非常感谢任何帮助。

谢谢!

【问题讨论】:

    标签: asp.net-mvc-3 iis-7 iis-6


    【解决方案1】:

    我想你可能看到的是:

    http://servername.domain.com/virtualdirectoryname/applicationname
    

    如果您已将虚拟目录命名为与您的应用程序相同的名称,那么我可以看出这会让您感到困惑。如果您没有虚拟目录,只有您的应用程序位于默认网站的根目录下,您将看到:

    http://servername.domain.com/applicationname
    

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

    【讨论】:

    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    相关资源
    最近更新 更多