如何让aspnet服务加载静态资源html(我的动态网页静态化) 转

我们知道,IIS自身是不能处理像ASPX扩展名这样的页面,只能直接请求像HTML这样的静态文件。

当客户端请求一个服务器资源时,这个HTTP请求会被inetinfo.exe进程截获(www服务),然后Check请求资源的类型,并依据资源映射信息(存储在IIS元库中,一种IIS专用的配置数据库)将请求的资源分配给特定的处理程序模块。
1,如果是静态资源的请求,则分配由IIS处理(IIS在本地Web Server上访问请求的文件),将内容输出到控制台,发出请求的浏览器就能接收到它了。-----End
2,如果是服务型请求资源(aspx),我们前面讲过:IIS自身是不能处理像ASPX扩展名这样的页面,,,那是怎么处理这种服务型资源的呢?
重点:在IIS中有一个ISAPI过滤器,它是一个COM组件。ASP.NET服务在注册到IIS的时候,就会添加一个Win32的扩展动态库aspnet_isapi.dll(默认路径:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll),在对应的扩展名中,根据定义好的方式(GET,HEAD,POST,DEBUG)来处理aspx界面。aspnet_isapi.dll处理代码,生成标准的HTML代码,返回给IIS,IIS再把内容发送到客户浏览器。------End

那Asp.Net页面运行机制---请求处理流程到底是什么样的呢?WebConfig优先级在Global前面还是后面,bin下的DLL又是什么时候装载的呢?
--------------------------
1.IIS接收到客户请求

2. IIS把请求交给aspnet_isapi.dll处理

3.(如果是第一次运行程序)装载bin目录中的dll

4.(如果是第一次运行程序)读取各级webconfig中的配置

5.(如果是第一次运行程序)编译装载global.asax,初始化HttpApplication实例

6.创建响应请求的HttpContext

7.创建承载响应结果的HttpTextWriter

8.找到合适的HttpHandler(asp.net页面),处理http请求

9.处理session,异常

10.把处理结果反馈个客户 这就是可定制的HttpModule
----------------------------

写这篇文章,是因为在做静态化处理的时候,我希望自己打开的html也被当成服务型资源,被aspnet_isapi.dll处理,而html默认是静态资源,是直接由IIS处理,不走Global等。
那这样处理的代码就没法被运行,怎么办呢?

当我们了解上面,就明白了,为什么aspnet_isapi.dll会去处理aspx呢?那是因为在ISAPI过滤器有aspx的映射关系,那如果我在ISAPI过滤器中加入.html的映射关系和处理方式,是不是也可以呢?
---------------------------------------------
在ISAPI过滤器中加入.html的映射关系和处理方式
【百度:把“.htm”映射到aspnet_isapi.dll】
操作:点击属性->配置->映射->添加->可执行文件名先aspnet_isapi.dll
扩展名输入.htm或者.html根据后缀来确定.限制为GET,HEAD,POST,DEBUG,去掉检测文件是否存在.保存即可.
---------------------------------------------

哈哈哈……是的,成功了,html成功的被aspnet_isapi.dll处理。至此,我的完美静态化处理也告一段落!!!!蛋终于不疼了。。

如何让aspnet服务加载静态资源html(我的动态网页静态化) 转

时间: 2025-01-31 15:03:25

如何让aspnet服务加载静态资源html(我的动态网页静态化) 转的相关文章

“不同浏览器对于同一域名的并发获取(加载)资源数是有限的”

转自:http://www.nowamagic.net/librarys/veda/detail/1077 这个总结来源于一次优化的请求,最初某个页面的加载十分缓慢,load事件迟迟无法触发,因此希望可以通过对静态文件分域名等方式对页面的外部资源进行优化,拿得load事件尽可能早地触发.于是我查看了页面的源码,并对外部资源进行了整理,基于下面2个理念画出了一个推测的瀑布图: 浏览器对同一个域只能并发2个HTTP请求 - 网上盛传已久. javascript文件的加载会阻塞浏览器其他资源的加载 -

Android 三级联动选择城市+后台服务加载数据库

技术渣,大家将就着看 首先我们需要一个xml数据保存到数据库,这里我从QQ下面找到一个loclist.xml文件 <CountryRegion Name="中国" Code="1"> <State Name="北京" Code="11"> <City Name="东城" Code="1" /> <City Name="西城"

Openstack学习笔记之——Neutron-server服务加载与启动源码分析(三)

本文是在学习Openstack的过程中整理和总结,由于时间和个人能力有限,错误之处在所难免,欢迎指正! 在Neutron-server服务加载与启动源码分析(二)中搞定模块功能的扩展和加载,我们就回到Neutron-server服务加载与启动源码分析(一)中的_run_wsgi函数 <span style="font-size:14px;">def _run_wsgi(app_name): app = config.load_paste_app(app_name) ifno

ArcGIS API for Silverlight 调用GP服务加载等值线图层

原文:ArcGIS API for Silverlight 调用GP服务加载等值线图层 第二篇.Silverlight客户端调用GP服务 利用ArcGIS API for Silverlight实现GP服务调用,这里的雨量数据是通过一个WebService获取而来,主要信息是雨量站点的经纬度坐标值和某个时间段内的降雨量值三个主要字段. 以下是核心代码部分: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pr

转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式

Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关于AS3加载图片等外部资源,我常用的有两种方式:Loader和Embed,各自的特点,总结如下: Embed:在Flash编译阶段就将资源嵌入,也就是说图片资源是会被编译进swf文件里面去的:这样子的好处是代码比较简洁,使用方便,也不存在加载顺序的问题,缺点是会增大swf文件的体积 Loader:在

Struts2的国际化(二)-利用超链接实现动态加载国际化资源文件

原理:程序是根据Locale来确定国际化资源文件,因此关键之处在于知道 Struts2 框架是如何确定 Local 对象的 ! 由于Struts2 使用 i18n 拦截器处理国际化,并且将其注册在默认的拦截器中,因此,可以通过阅读 I18N 拦截器知道. 具体确定 Locale 对象的过程: > Struts2 使用 i18n 拦截器 处理国际化,并且将其注册在默认的拦截器栈中 > i18n拦截器在执行Action方法前,自动查找请求中一个名为 request_locale 的参数. 如果该参

ClassLoader.getResourceAsStream() 加载配置文件资源

JAVA 笔记 ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别     Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致. 例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.test.mycode包下查找相应的资源. 如果这个name

Xcode升级5.1后ios5真机因加载cocostuio资源闪退问题

cocos2dx在ios5真机调试闪退问题: xcode升级5.1后,项目在ios7真机测试没有问题,但在IOS5就出现闪退的现象,这是由于Xcode升级后对项目设置做了一些优化,在custom compiler flags中,-O2是用cocosdx2.2.2项目工程的默认设置,去掉所有的-O2就不会在IOS5真机出现因为加载cocostuio出错而闪退的显现.   //白白原创 Xcode升级5.1后ios5真机因加载cocostuio资源闪退问题,布布扣,bubuko.com

schtasks在win7下提示错误:无法加载列资源

转自: http://blog.chinaunix.net/uid-24946452-id-2887851.html 查看cmd 编码 chcp 如使用 936中文GBK编码的话 schtasks.exe /query 会报错 错误: 无法加载列资源. 调整 936 为 437 美国编码 则可以运行,但是无法打印出非ascii字符.(非ascii字符都变?.问号"?") 调整方法 chcp 437 就好了啦