配置iis7&;用于URL路由的ASP.NET应用程序
这不是一个MVC主题。 我有一个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
应用程序\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开发服务器上)中调试时,此应用程序工作正常。AGEThttp://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:已启用
<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,麻烦少多了。以关闭此线程的名义,我将此指定为可接受的答案。