【问题标题】:Deploying ASP.NET 4 Web Forms Application Using Routing on IIS 6在 IIS 6 上使用路由部署 ASP.NET 4 Web 窗体应用程序
【发布时间】:2011-02-26 13:52:24
【问题描述】:

为了澄清,我正在研究的场景涉及部署使用 RouteTable.Routes.MapPageRoute 的 ASP.NET 4 Web 窗体应用程序:

public class Global : System.Web.HttpApplication
{
  public static void RegisterRoutes(RouteCollection routes)
  {
    RouteTable.Routes.MapPageRoute("questionnaires", "questionnaires", "~/Pages/Questionnaires/List.aspx", false);
    RouteTable.Routes.MapPageRoute("questionnaires_submit", "questionnaires/submit", "~/Pages/Questionnaires/Insert.aspx", false);   
  }

  void Application_Start(object sender, EventArgs e)
  {
    RegisterRoutes(RouteTable.Routes);
  }
}

场景 1: 应用程序不是作为现有网站中的虚拟目录托管的,而是一个独立的网站(它是它自己的起点)。它有自己的应用程序池。部署后,它无需任何修补即可工作。

场景 2: 应用程序托管为现有网站下的虚拟目录。它也有自己的应用程序池。但是,我在尝试访问我已规划的路线时收到 404 错误。幸运的是,我有让 MVC 在 3.5 sp 1 中工作的经验,所以我尝试了该方法:打开虚拟导演的属性对话框,转到“目录”选项卡,单击“配置”按钮,并添加通配符应用程序图到 aspnet_isapi.dll 并取消选中“验证该文件是否存在”复选框。这使它工作。

我的问题是为什么我必须在第二种情况下添加通配符应用程序映射而不是第一种?如果有帮助,在第二种情况下托管虚拟目录的根网站设置为 ASP.NET 版本 2.0.50727。

【问题讨论】:

    标签: asp.net routing .net-4.0 url-routing


    【解决方案1】:

    ASP.NET 4.0 启用无扩展 URL 的路由 在 ASP.NET v4.0 中,有一种更好的方法来启用路由。通常您只对路由无扩展 URL 感兴趣,而无需路由静态请求(HTML、JPG、GIF、CSS、JS 等)。在 v4.0 中,有一个新功能允许将无扩展名 URL 定向到托管代码中,而不会影响静态请求(HTML、JPG、GIF、CSS、JS 等)。由于此功能,在 IIS 6 上您不再需要通配符映射

    查看这里了解更多信息:

    MSDN

    本质上,.NET 4.0 路由 dll 比 3.5 版本更智能。结果,减少了工作量。在您的情况下,您可能有在完整的 .NET 4.0 中运行的独立站点,而在您的虚拟目录中,根在 2.0/3.0/3.5 模式下运行。希望这会有所帮助!

    【讨论】:

    • 感谢您的帮助,那篇文章很有见地,但它仍然没有说明(对我而言)为什么对于运行版本 4 的虚拟目录(在要运行的网站设置内)的路由处理方式不同2) 和一个运行版本 4 的网站。
    • 我会假设 URL、扩展等主要是在根级别控制的。因此,首先调用根配置 (.NET 2.0),因为 IIS 甚至必须知道将请求发送到哪个虚拟目录。请求 -> IIS -> 虚拟站点(.NET 2 在此处处理文件处理程序/路由)-> 虚拟目录(.NET 4 处理管理代码)。其他请求 -> IIS -> 虚拟站点(.NET 4 处理托管代码和文件处理程序/路由)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多