配置iis7&;用于URL路由的ASP.NET应用程序

配置iis7&;用于URL路由的ASP.NET应用程序,asp.net,asp.net-mvc,iis,iis-7,url-routing,Asp.net,Asp.net Mvc,Iis,Iis 7,Url Routing,这不是一个MVC主题。 我有一个ASP.NET应用程序,它在应用程序\u Start方法中执行URL路由 路由如下所示: RouteTable.Routes.Add(new Route( "Profile/{query}", new RouteValueDictionary() { {"query",string.Empty} }, new GenericRouteHandler("~/ProfileHttpHandler.ashx") )); GenericRouteHandle

这不是一个MVC主题。 我有一个ASP.NET应用程序,它在
应用程序\u 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模板。它将内容类型设置为“text/plain”,并写入“helloworld”

在Visual Studio(在ASP.NET开发服务器上)中调试时,此应用程序工作正常。A
GEThttp://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>


有关此操作的详细信息,请检查。

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


检查

你能从服务器上的事件日志中找出500错误是什么吗?我正在与我的提供商一起尝试获取一些日志。文件系统上最近的日志文件已锁定,我似乎无法访问它。我已验证500错误是对OP中描述的应用程序的直接响应。发布新的Web应用程序应用到虚拟目录会让我得到HTTP 200s。您好。不幸的是,日志文件没有包含足够有用的信息。您可以尝试切换到经典管道模式看看它是否工作吗?它在经典模式下也不工作。我将其更改为集成,以直接响应我遇到的错误。我的OP beca中没有包含这一点使用我不知道它是相关的。但是,它已经包含在我的web.config文件中。似乎我注定不会使用WebForms进行路由。我已经将我的项目移植到MVC,麻烦少多了。以关闭此线程的名义,我将此指定为可接受的答案。