这不是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:启用。