gpt4 book ai didi

.net - IIS6 上的 ASP.NET MVC

转载 作者:行者123 更新时间:2023-12-03 10:41:24 25 4
gpt4 key购买 nike

我在哪里可以找到关于在 IIS6 上运行 ASP.NET MVC 的最佳实践的一些好的指针?

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

所以我想知道如何最好地在 ASP.NET MVC 中构建应用程序,并使其易于部署在 IIS6 和 IIS7 上。请记住,这是针对标准 Web 主机的,因此无法访问 ISAPI 过滤器或 IIS6 中的特殊设置。

在开发面向 IIS6 的 ASP.NET MVC 应用程序时,还有什么应该考虑的吗?有什么不能用的功能吗?

更新:更大的问题之一是路线问题。 {controller}/{action} 模式适用于 IIS7,但不适用于需要 {controller}.mvc/{action} 的 IIS6。那么我如何使这个透明?再次,无 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", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);

那么你如何让它发挥作用呢?好吧,这就是您需要原始路由代码的地方:
routes.MapRoute(
"Default2", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);

当您这样做时,Default.aspx 和 http://[website]/两者都重新开始工作,我想是因为它们已成功映射回 Home Controller 。所以完整的解决方案是:
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", action = "Index", id = "" } // Parameter defaults
);

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

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

并且您的站点应该可以在 IIS 6 下正常运行。(至少在我的 PC 上是这样。)

另外,如果您在页面中使用 Html.ActionLink(),则不必更改整个站点中的任何其他代码行。此方法负责正确标记 Controller 的 .aspx 扩展名。

关于.net - IIS6 上的 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com