"<system.web>和<system.webServer>的区别是什么?"

209

每次我需要为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
一个更好的当前参考资料是: http://msdn.microsoft.com/en-us/library/46c5ddfy.aspx - Shannon
2个回答

165

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

然而,如果你只在集成模式下运行IIS 7.0,则不需要将处理程序添加到两个部分中。在system.web中添加它也是IIS 7.0在经典模式下的后备方案,除非我记错了。我没有对此进行广泛的测试。

更多信息请参见http://msdn.microsoft.com/en-us/library/bb763179.aspx


4
像 <httpRuntime> 这样的属性虽然位于 system.web 中,但在 IIS 7 集成模式下仍会产生影响,您对此有何看法? - sclarson
43
system.web部分并没有被system.webserver部分取代,而是被扩展了。 - Chris
1
在IIS 8.5上,我发现httpCookies设置在system.webServer中不可用,但如果我创建一个system.web并将其放在那里,则可以正常工作。 - Eborbob
@Chris 你好,我在Linux系统中如何设置这些选项?我想设置以下选项:maxWorkerThreads = 100,maxIoThreads = "100",minWorkerThreads = "50",minIoThreads = "50"。 - undefined

47

前者适用于经典模式。

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


鉴于我的经验,这个答案在长度、清晰度和真实性方面更佳。除了之前的经典模式外,还应添加 IIS express 和其他不是 IIS 7 的服务器。 - Ben Gripka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接