ASP.NET MVC在IIS6上

前端之家收集整理的这篇文章主要介绍了ASP.NET MVC在IIS6上前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在哪里可以找到一些关于在IIS6上运行ASP.NET MVC的最佳实践的好指标?

我还没有看到任何提供IIS7托管的网站主机的现实选择。主要是因为我不住在美国。

所以我想知道如何你最好在ASP.NET MVC中构建应用程序,并使其易于可用于部署在IIS6和IIS7。请记住,这是标准的web主机,所以没有访问ISAPI过滤器或IIS6内的特殊设置。

在开发ASP.NET MVC应用程序以定位IIS6时,有没有其他人应该考虑?任何不工作的功能

更新:一个更大的问题是路由的东西。模式{controller} / {action}将在IIS7上工作,而不是IIS6,它需要{controller} .mvc / {action}。那么如何让这个透明?再次,没有ISAPI和没有IIS设置,请。

解决方法

它花了我一点,但我想出了如何使扩展与IIS 6工作。首先,您需要重做基本路由以包括.aspx,以便他们将路由通过ASP.NET ISAPI过滤器。
routes.MapRoute(
    "Default",// Route name
    "{controller}.aspx/{action}/{id}",// URL with parameters
    new { controller = "Home",action = "Index",id = "" }  // Parameter defaults
);

例如,如果您导航到Home.aspx,您的网站应该工作正常。但Default.aspx和默认页面地址http://[website]/停止工作正常。那么如何解决呢?

那么,你需要定义第二条路线。不幸的是,使用Default.aspx作为路由不能正常工作:

routes.MapRoute(
    "Default2",// Route name
    "Default.aspx",id = "" }  // Parameter defaults
);

那么如何让这个工作?那么,这是你需要原始的路由代码

routes.MapRoute(
    "Default2",// Route name
    "{controller}/{action}/{id}",id = "" }  // Parameter defaults
);

当你这样做,Default.aspx和http://[website]/都开始工作,我想,因为他们成功映射回家控制器。所以完整的解决方案是:

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

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

        routes.MapRoute(
            "Default2",// Route name
            "{controller}/{action}/{id}",id = "" }  // Parameter defaults
        );
    }

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

和你的网站应该开始工作正常在IIS 6(至少它在我的电脑。

并且作为奖励,如果你在你的页面中使用Html.ActionLink(),你不应该改变整个网站的任何其他代码行。此方法负责在控制器的.aspx扩展名上正确标记

猜你在找的asp.Net相关文章