<system.web>和<system.webServer>之间的区别?


197

每当我必须为带有IIS7的ASP.NET添加处理程序或模块时,说明总是告诉我将其合并为两个部分:system.websystem.webserver

<system.web>
    <httpHandlers>
    </httpHandlers>
    <httpModules>
    </httpModules>
</system.web>

还有这个:

<system.webServer>
    <modules>
    </modules>
    <handlers>
    </handlers>
</system.webServer>

这两个部分有什么区别?

另外,如果我没有将其添加到本system.web节中,我的Visual Studio 2008调试器也将无法正常工作。


2
对此的更好的当前参考是:msdn.microsoft.com/en-us/library/46c5ddfy.aspx
Shannon 2010年

Answers:


157

system.web部分用于配置IIS 6.0,而system.webserver版本用于配置IIS 7.0。IIS 7.0包括一个新的ASP.NET管道和一些配置差异,因此包括额外的配置部分。

然而...

如果仅在集成模式下运行IIS 7.0,则无需将处理程序添加到两个部分中。除非我误会,否则将其添加到system.web也是在经典模式下运行的IIS 7.0的后备。我尚未对此进行广泛的测试。

有关更多信息,请参见http://msdn.microsoft.com/zh-cn/library/bb763179.aspx


4
放置在system.web中的<httpRuntime>这样的属性又如何在IIS 7集成模式下仍然有所不同呢?
sclarson 2011年

38
system.web部分不会被system.webserver部分取代,而只是扩展了。
克里斯(Chris)

在IIS 8.5上,我发现该httpCookies设置在system.webServer中不可用,但是如果我创建了system.web并将其放在其中,则可以使用。
Eborbob

44

前者用于经典模式。

后者用于集成管道模式(在IIS7 +中可用)。


根据我的经验,在长度,清晰度和现实性方面,这是否是一个更好的答案。除了经典模式对前者,添加IIS表达和其他服务器不属于IIS 7
奔Gripka
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.