这不是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文件夹中的任何内容时,我收到HTTP 500错误,包括Default.aspx。
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服务提供者的控制面板中,我将此应用程序所在的目录配置为虚拟目录。 它具有以下属性:
答案 0 :(得分:2)
您可以尝试将此添加到您的web.config文件
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
有关此问题的详细信息,请查看iis forum thread。
答案 1 :(得分:1)
要配置ASP.NET网站或Web应用程序以进行路由,首先需要添加对System.Web.Routing程序集的引用..NET Framework 3.5的SP1安装将此程序集安装到全局程序集中缓存,您可以在标准的“添加引用”对话框中找到程序集。