【问题标题】:Deploying ASP.NET MVC to IIS6: pages are just blank将 ASP.NET MVC 部署到 IIS6:页面只是空白
【发布时间】:2010-05-24 13:55:28
【问题描述】:

我有一个 MVC 应用程序,它实际上位于其他几台服务器上,但我没有进行部署。对于此部署,我已将通配符添加到 aspnet_isapi.dll 中,从而消除了 404 错误。但是页面并没有拉起来,而是一切都是空白的。我似乎找不到任何 IIS 配置差异。 Global asax.cs 文件确实定义了路由,但正如我在工作服务器上看到的那样,该文件不只是挂在根目录或任何如此明显的地方。我会在这里遗漏什么?

所有服务器都在运行 IIS6,我已经比较了设置,此时它们在我看来是一样的。

谢谢... 布莱恩

迄今为止对 cme​​ts 的编辑: 我查看了事件日志但没有运气,并根据 David Wang 搜索了各种 IIS 日志:blogs.msdn.com。

下面是 Global.asax.cs 文件...

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("error.axd"); // for Elmah

        // For deployment to IIS6
        routes.Add(new Route
        (
            "{controller}.mvc/{action}/{id}",
            new RouteValueDictionary(new { action = "Index", id = (string)null }),
            new MvcRouteHandler()
        ));

        routes.MapRoute(
            "WeeklyTimeSave",
            "Time/Save",
            new { controller = "Time", action = "Save" }
        );

        routes.MapRoute(
            "WeeklyTimeAdd",
            "Time/Add",
            new { controller = "Time", action = "Add" }
        );

        routes.MapRoute(
            "WeeklyTimeEdit",                                              
            "Time/Edit/{id}",                                       
            new { controller = "Time", action = "Edit", id = "" }  
        );

        routes.MapRoute(
            "FromSalesforce",
            "Home/{id}",
            new { controller = "Home", action = "Index", id = "" });

        routes.MapRoute(
            "Default2", 
            "{controller}/{id}",
            new { controller = "Home", action = "Index", id = "" }  
        );

        routes.MapRoute(
            "Default", 
            "{controller}/{action}/{id}",  
            new { controller = "Home", action = "Index", id = "" }
        );

    }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}

也许这和 asax 文件不在它需要的地方一样愚蠢,但如果我现在知道的话。

【问题讨论】:

  • IIS 日志是否显示请求?事件日志中有任何内容吗?
  • 我刚刚完成了一个应用程序,该应用程序在开发时使用 IIS7(所以我可以拥有完整的 REST url),但必须部署在 IIS6 上(需要一个 .aspx 页面)我记得做的唯一修改使其工作是添加 IIS 6 可以处理的特定路由。 routes.MapRoute("MyPage", "MyPage/...") routes.MapRoute("MyPage.aspx", "MyPage.aspx/...")

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


【解决方案1】:

这是在 IIS6 上部署 ASP.NET MVC 1.0 时对我帮助最大的主要指南:

http://www.hanselman.com/blog/DeployingASPNETMVCOnASPNET20.aspx

而且由于它有点扼杀了 REST 架构中友好名称的整个想法,这里有一个解决文件扩展名问题的方法:

http://slashflux88DOTcom/blog/using-asp-net-mvc-on-iis-6-without-the-mvc-extension/

抱歉,URL 被混淆了,所以用垃圾邮件拦截器打我。

【讨论】:

  • 这是我们的“其他”开发服务器,它安装了 3.5。我认为所有这些都归结为我没有看到的 IIS/虚拟目录 URL 路由。但是那个 Hanselman 链接对于破解 2.0 来运行 MVC 提供了相当丰富的信息。
猜你喜欢
  • 2011-03-25
  • 1970-01-01
  • 2021-02-14
  • 2013-12-31
  • 1970-01-01
  • 2021-12-22
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多