asp.net - 配置 IIS 7 和 ASP.NET 应用程序进行 URL 路由

标签 asp.net asp.net-mvc iis iis-7 url-routing

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

路由看起来像:

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 模板。它将 Content-type 设置为“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:已启用。

最佳答案

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

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

有关此内容的更多信息,请查看 iis forum thread .

关于asp.net - 配置 IIS 7 和 ASP.NET 应用程序进行 URL 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226610/

相关文章:

javascript - 如何创建像指标一样的循环进度(饼图)

asp.net - 阻止跨域调用 asp.net .asmx Web 服务

asp.net-mvc - 托管 azure MVC 应用程序时,我的 web.config 的 appSettings 集合为空

asp.net-mvc - 如何将数据从 AuthorizeAttribute 传递到 Controller ?

iis - Amazon EC2 多域

.net - 在 gridview 的单元格内添加一个空间

asp.net - ASP.Net 中 URL 中的 UrlEncoding Plus(+)

c# - MVC5使用MvcSiteMapProvider构建twitter Bootstrap 菜单

c# - 迁移到服务器后 SignalR 不工作

ios - itms-services ://? action=download-manifest 在 IIS 中不起作用