Inside.Net

自由与繁荣的国度

博客园 首页 新随笔 联系 订阅 管理

[翻译]
文章来源:http://www.theserverside.net/articles/showarticle.tss?id=IIS_ASP

     IIS与.Net Framework是通过非托管的ISAPI扩展(aspnet_isapi.dll和aspnet_filter.dll)进行通信的。aspnet_isapi_dll扩展用于处理路由请求而aspnet_filter.dll主要处理ASP.NET的无状态会话,这些非托管的组件连同Windows服务状态(aspnet_state.exe)和ASP.NET工作进程(aspnet_wp.exe)组成了ASP.NET处理模型的核心。
    当.Net Framework安装到机器之后(前提安装成功IIS),IIS配置明确的扩展处理请求到aspnet_isapi.dll,有意思的是筛选器也同样被配置到IIS的内部。

对于ASP.NET资源的请求被传递给IIS和ASP.NET扩展配置,该配置是非托管代码和托管代码之前的桥梁。当控件被传递到你的应用程序之前,ASP.NET应用程序对象必须被实例化(在运行时刻)并且考虑决定如何配置设定对请求的处理。Machine.config和Web.Config文件(内部配置元素集合)可以处理全部的请求。

在本文中我们将主要关注<httpHandlers>配置区域,该区域意味着配置.Net处理请求的类型。在默认的Machine.Config文件中可以找到以下代码:

<httpHandlers>
   <add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler"/>
   <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/>
   <add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory"/>
   <add verb="*" path="*.asmx" type="System.Web.Services.Protocols.WebServiceHandlerFactory,
System.Web.Services, Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
   <add verb="*" path="*.rem"
type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" validate="false"/>
   <add verb="*" path="*.soap"
type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=1.0.3300.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" validate="false"/>
   <add verb="*" path="*.asax" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.ascx" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.cs" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.csproj" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.vb" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.vbproj" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.webinfo" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.asp" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.licx" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.resx" type="System.Web.HttpForbiddenHandler"/>
   <add verb="*" path="*.resources" type="System.Web.HttpForbiddenHandler"/>
   <add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler"/>
   <add verb="*" path="*" type="System.Web.HttpMethodNotAllowedHandler"/>
</httpHandlers>


未完代续。










posted on 2005-03-26 14:42  Bluefee.Net  阅读(1204)  评论(0编辑  收藏  举报