ASP.NET对请求处理的过程
ASP.NET对请求处理的过程
当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过http管道(Http PipeLine)将请求发送给ASPNET_WP.exe进程,在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求,处理完毕将结果返回客户端。
l inetinfo.exe进程:
是www服务的进程,IIS服务和ASPNET_ISAPI.DLL都寄存在此进程中。
l ASPNET_ISAPI.DLL:
是处理.aspx文件的win32组件。其实IIS服务器是只能识别.html文件的,当IIS服务器发现被请求的文件是.aspx文件时,IIS服务器将其交给aspnet_isapi.dll来处理。
l aspnet_wp.exe进程:
ASP.NET框架进程,提供.net运行的托管环境,.net的CLR(公共语言运行时)就是寄存在此进程中。
ASP.NET Framework处理一个Http Request的流程
HttpRequest-->inetinfo.exe-->ASPNET_ISAPI.dll-->ASPNET_WP.exe-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()
ASP.NET请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,ASP.NET 把http请求依次传递给管道中各个HttpModule,最终被HttpHandler处理,处理完成后,再次经过管道中的HTTP模块,把结果返回给客户端。我们可以在每个HttpModule中都可以干预请求的处理过程。
注意:在http请求的处理过程中,只能调用一个HttpHandler,但可以调用多个HttpModule。
当请求到达HttpModule的时候,系统还没有对这个请求真正处理,但是我们可以在这个请求传递到处理中心(HttpHandler)之前附加一些其它信息,或者截获的这个请求并作一些额外的工作,也或者终止请求等。在HttpHandler处理完请求之后,我们可以再在相应的HttpModule中把请求处理的结果进行再次加工返回客户端。
HttpModule
HTTP模块是实现了System.Web.IhttpModule接口的类。
IHttpModule接口的声明:
public interface IHttpModule
{
&
相关文档:
可以使用 ASP.NET Login 控件创建登录页。此控件提取用户名和密码,并使用 ASP.NET 成员资格和 Forms 身份验证来验证用户的凭据并创建身份验证票证。
1、创建一个使用 ASP.NET 成员资格的 ASP.NET Web 应用程序。有关详细信息和示例,请参见配置 ASP.NET 应用程序以使用成员资格 ......
本节中的主题描述如何使用 Visual Web Developer 工具箱的“HTML”选项卡上的 ASP.NET Web 服务器控件。
默认情况下,服务器无法使用 ASP.NET 网页上的 HTML 元素;这些元素被视为传递给浏览器的不透明文本。但是,通过将 HTML 元素转换成 HTML 服务器控件,可以将它们公开为 ......
ASP.NET清除页面缓存
(1) Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Res ......
发布中遇到了两个问题
一。session 会短时间自动消失
解决办法
1。在www.google.com中查session 丢失
2。在Window服务中将ASP.NET State Service 启动。
3。修改web.config
<system.web>
add <sessionState mode="StateServer" timeout="60"/>
二。sql server 超过最大连接池数
......
由于用的是VPS主机,不知道啥原因SESSION总是丢失,无奈换Cookies。
查一下MSDN,在ASP.NET有两个COOKIES,Response.Cookies和Request.Cookies,无论用哪个都不行,添加进去后就读取不到
后来发现通过Response.Cookies添加、Request.Cookies读取才行。下面是添加、读取、删除的代码:
//添加
HttpCookie c = ne ......