加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC在IIS6上

发布时间:2020-12-15 18:54:16 所属栏目:asp.Net 来源:网络整理
导读:在哪里可以找到一些关于在IIS6上运行ASP.NET MVC的最佳实践的好指标? 我还没有看到任何提供IIS7托管的网站主机的现实选择。主要是因为我不住在美国。 所以我想知道如何你最好在ASP.NET MVC中构建应用程序,并使其易于可用于部署在IIS6和IIS7。请记住,这是
在哪里可以找到一些关于在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扩展名上正确标记。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读