Visual studio VS2010开发web服务器不使用集成模式HTTP处理程序/模块
我正在使用Visual Studio 2010开发一个针对.NET Framework 4.0的ASP.NET MVC 2网站 My web.config包含以下代码:Visual studio VS2010开发web服务器不使用集成模式HTTP处理程序/模块,visual-studio,httphandler,web-config,httpmodule,Visual Studio,Httphandler,Web Config,Httpmodule,我正在使用Visual Studio 2010开发一个针对.NET Framework 4.0的ASP.NET MVC 2网站 My web.config包含以下代码: <system.webServer> <modules runAllManagedModulesForAllRequests="true"> <add name="XhtmlModule" type="DomenicDenicola.Website.XhtmlModule"
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="XhtmlModule" type="DomenicDenicola.Website.XhtmlModule" />
</modules>
<handlers>
<add name="DotLess" type="dotless.Core.LessCssHttpHandler,dotless.Core" path="*.less" verb="*" />
</handlers>
</system.webServer>
当我使用Build>Publish
将网站放在本地IIS7实例上时,效果非常好
但是,当我使用Debug>Start Debug
时,HTTP处理程序和模块都不会对任何请求执行
奇怪的是,当我将处理程序和模块
标记放回
和
下的
中时,它们就工作了。这似乎意味着开发web服务器正在经典模式下运行
如何修复此问题?您不需要WebDev.WebServer.exe不支持也不能支持集成管道 因此,如果您的代码无法在这两种环境中执行,则需要使用本地IIS进行开发 基本上,
system.web
是配置webdev服务器和IIS5-6处理程序和模块的地方<正如您所知,code>system.webServer用于IIS7处理程序和模块
参考:
WebDev.WebHost40(和以前的版本)中的每个请求都由HttpRuntime.ProcessRequest
(). 这是所有三个版本的WebHost.WebServer.dll(WebDev.WebServer.exe的核心)中使用的方法
还有一句话是,通过管理,谁对卡西尼/WebDev的内部运作相当熟悉 我不确定我是否回答得太晚了,但尽管Cassini服务器不支持集成管道模式这一众所周知的事实,但您仍然可以使用经典管道进行本地测试,方法是将其添加到web.config中system.web的httpModules部分:
<system.web>
<compilation debug="true" targetFramework="4.0"/>
.
.
.
<!-- HTTP Modules using Classic Pipeline -->
<httpModules>
<add name="YourHttpModule" type="ACME.YourHttpModule"/>
</httpModules>
</system.web>
<system.webServer>
<!-- HTTP Modules using Integrated Pipeline -->
<modules runAllManagedModulesForAllRequests="true">
<add name="YourHttpModule" type="ACME.YourHttpModule"/>
</modules>
</system.webServer>
.
.
.
您可能希望从生产web.config中删除httpModules部分。今天在visual studio 2012中运行时获得了此功能。找到原因是VisualStudio发布了2010年附带的旧web服务器,如上所述,它无法在那里工作。右键单击属性,选择“Web”选项卡并选择IIS Express选项,即可更改为IIS Express。然后,启动调试模式将在IIS Express中启动,这将非常支持诸如
Request.Headers.Add
或导致异常的任何操作。我假设您是对的,但是如果有此语句的源代码,我会更高兴。我尝试按照您的建议在web.config中添加模块,它仍然抛出PlatformNotSupported异常。在我的例子中,我试图在HttpModule的事件上使用Headers.Remove()。使用VS2010。值得注意的是,如果出于任何原因(例如,公司安全禁止)无法启用IIS Express,将Request.Headers.Add()
更改为Request.AddHeaders()
通常也会解决此问题。