添加和删除处理程序有什么区别?
在我使用VS2008创建的新Web项目中,处理程序的定义如下:
<system.web>
...
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
<add verb="*" path="/hello/helloworld.xml" type="HandlerTest.HelloWorldHandler, HandlerTest"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
但是在预先存在的项目中(即:社区服务器),http处理程序将按如下方式添加/删除:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<security>
<requestFiltering allowDoubleEscaping="true"/>
</security>
<modules runAllManagedModulesForAllRequests="true">
<remove name="CommunityServer"/>
<remove name="ScriptModule"/>
<remove name="UrlRoutingModule"/>
<add name="CommunityServer" type="CommunityServer.CSHttpModule, CommunityServer.Components"/>
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</modules>
<handlers accessPolicy="Read, Write, Script, Execute">
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="ScriptHandlerFactory"/>
<remove name="ScriptHandlerFactoryAppServices"/>
<remove name="ScriptResource"/>
<add verb="GET" name="redirect" path="Utility/redirect.aspx" type="CommunityServer.Components.Redirect, CommunityServer.Components"/>
<add verb="GET" name="aggbug" path="aggbug.aspx" type="CommunityServer.Components.HttpHandler.AggBugHandler, CommunityServer.Components"/>
<add verb="GET" name="avatar" path="avatar.aspx" type="CommunityServer.Components.HttpHandler.AvatarHttpHandler, CommunityServer.Components"/>
<add verb="GET" name="vcard" path="vcard.aspx" type="CommunityServer.Components.HttpHandler.VCardHttpHandler, CommunityServer.Components"/>
<add verb="GET" name="tinyurl" path="r.ashx" type="CommunityServer.Components.HttpHandler.TinyUrlHttpHandler, CommunityServer.Components"/>
<add verb="GET" name="weblogsubscription-confirmation" path="weblogsubscription-confirmation.ashx" type="CommunityServer.Blogs.Components.WeblogSubscriptionConfirmation, CommunityServer.Blogs"/>
<add verb="GET" name="threadsubscription-confirmation" path="threadsubscription-confirmation.ashx" type="CommunityServer.Blogs.Components.ThreadSubscriptionConfirmation, CommunityServer.Blogs"/>
<add verb="GET" name="cfs-file" path="cfs-file.ashx" type="CommunityServer.Components.FileHttpHandler, CommunityServer.Components"/>
<add verb="GET" name="cfs-filesystemfile" path="cfs-filesystemfile.ashx" type="CommunityServer.Components.FileSystemFileStorageHttpHandler, CommunityServer.Components"/>
<add verb="GET" name="resized-image" path="resized-image.ashx" type="CommunityServer.Components.ImageFileResizerHttpHandler, CommunityServer.Components"/>
<add verb="GET,POST" name="multipleupload" path="multipleupload.ashx" type="Telligent.Glow.MultipleUploadFileHandler, Telligent.Glow"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add name="TinyMCE" verb="GET,HEAD,POST" path="TinyMCE.ashx" type="Moxiecode.TinyMCE.Web.HttpHandler,Moxiecode.TinyMCE"/>
<add name="Schedule" verb="*" path="schedule.ashx" type="CommunityServer.Scheduler.ScheduleHandler, CommunityServer.Scheduler" />
</handlers>
</system.webServer>
为什么注册http处理程序的方法不止一种?
答案 0 :(得分:6)
<system.web>
部分适用于IIS6及更低版本,而<system.webServer>
适用于IIS7及更高版本。为IIS7重新设计了web.config的布局,使其更加强大/友好,但代价是向后兼容。
答案 1 :(得分:1)
您在“节点”中发布的第二个示例是为IIS 7配置的方法,允许您直接配置服务器。另一种方法是“遗留”,适用于所有受支持的IIS版本。