代码之家  ›  专栏  ›  技术社区  ›  Jesse Hallam

为URL路由配置IIS 7和ASP.NET应用程序

  •  3
  • Jesse Hallam  · 技术社区  · 16 年前

    这不是MVC主题。 我有一个ASP.NET应用程序,它在 Application_Start 方法。

    路由如下:

    RouteTable.Routes.Add(new Route(
      "Profile/{query}",
      new RouteValueDictionary() { {"query",string.Empty} },
      new GenericRouteHandler("~/ProfileHttpHandler.ashx")
    ));
    

    一 GenericRouteHandler 看起来像工具 GetHttpHandler 用:

    var page= (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(_virtualPath, typeof(IHttpHandler));
    ...
    return page;
    

    而profilehttphandler.ashx只是一个Visual Studio模板。它将内容类型设置为“text/plain”,并写入“hello world”。

    在Visual Studio(在ASP.NET开发服务器上)中调试时,此应用程序工作正常。一 GET http://localhost:59474/Profile/abc123 按预期路由到HTTP处理程序。

    但是,将此应用程序发布到以集成管道模式运行IIS 7的远程计算机时,进程失败。当我试图在apps文件夹中获取任何内容(包括default.aspx)时,会出现HTTP 500错误。

    web.config配置如下:

    <system.web>
      <httpModules>
        <add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </httpModules>
    </system.web>
    <system.webServer>
      <modules runAllManagedModulesForAllRequests="true">
        <add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      </modules>
    </system.webServer>
    

    最后,我不确定这是否是相关信息。在我的Web服务提供商的控制面板中,我将此应用程序所在的目录配置为虚拟目录。 它具有以下特性:

    • mydomain.ca/routeapp:托管空间中的文件夹(domain.ca\wwwroot\routeapp)
    • 允许匿名访问:打开。
    • 启用集成的Windows身份验证:打开。
    • 启用基本身份验证:启用。
    • ASP:禁用。
    • ASP.NET:2.0集成管道。
    • PHP:禁用。
    • Perl:启用。
    2 回复  |  直到 15 年前
        1
  •  2
  •   Branislav Abadjimarinov Ivan Choo    16 年前

    您可以尝试将此添加到web.config文件中

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
    

    有关此项的详细信息,请检查 iis forum thread .

        2
  •  1
  •   user229044    15 年前

    要配置用于路由的ASP.NET网站或Web应用程序,首先需要添加对System.Web.Routing程序集的引用。安装.NET Framework 3.5的SP1会将此程序集安装到全局程序集缓存中,您可以在标准的“添加引用”对话框中找到该程序集。

    检查 this link

    推荐文章