Html页面请求在ihttpmodule中怎么捕获请求

lidup 2009-03-19 11:31:17
Html页面请求在ihttpmodule中怎么捕获请求, public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
context_BeginRequest方法中用来urlrewrite,当发布到iis后,怎么让请求进入该方法呢?当没有配置到iis中是没问题的。
iis本身是可以处理html页面的,只有当aspx页面请求的时候才会调用aspnet_isapi.dll,怎么配置iis才可以呢。如果将html的
isapi扩展改为aspnet_isapi.dll,那么连html页面都访问不了。怎么解决呢???
...全文
233 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfyfngu 2009-03-20
  • 打赏
  • 举报
回复
在需要处理html文件的文件夹下创建一个web.config文件,并写入下面的代码:

<httpHandlers>
<add verb="*" path="*.html" type="SomeNameSpace.SomeHandler, 这里是程序集名称" />
</httpHandlers>


再新建一个 SomeNameSpace.SomeHandler 的类去处理html

namespace SomeNameSpace {

public sealed class SomeHandler : IHttpHandler {

public void ProcessRequest(HttpContext context) {
// 接受到了一个来自html文件的请求
}

public bool IsReusable {return false;}

}

}
wfyfngu 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lidup 的回复:]
引用 6 楼 wfyfngu 的回复:
需要满足两个条件:

1) IIS将扩展名为html的文件提交给 ASP.NET 处理
2) ASP.NET 程序将 html 文件提交给相应的 httpmodule 处理

关键在于是否满足第1条。
如果满足第一条那么html文件都运行不了
[/Quote]

如果你不满足第一个条件,ASP.NET根本就收不到html文件的请求,又何来后面的处理。
至于你说的第二个问题,可与将不同类型的html文件分不同的文件夹存储,
在文件夹的根目录下加一个web.config文件,并写入下面的节点
<?xml version="1.0" encoding="utf-8"?>

<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.html" type="System.Web.DefaultHttpHandler" />
</httpHandlers>
</system.web>
</configuration>


这样一来,这个文件夹下的所有html文件将不会被ASP.NET处理。
wfyfngu 2009-03-19
  • 打赏
  • 举报
回复
需要满足两个条件:

1) IIS将扩展名为html的文件提交给 ASP.NET 处理
2) ASP.NET 程序将 html 文件提交给相应的 httpmodule 处理

关键在于是否满足第1条。
skison 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 maddemon 的回复:]
<httpModules>
<add name="UrlRewriteModule" type="类的全名, 类的dll名"/>
</httpModules>
[/Quote]
重写HttpModule

像 public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
这种东西是在Page类实例后才执行的,而HttpModule的执行是在Page实例化之前
maddemon 2009-03-19
  • 打赏
  • 举报
回复
<httpModules>
<add name="UrlRewriteModule" type="类的全名, 类的dll名"/>
</httpModules>
zcandyly20211 2009-03-19
  • 打赏
  • 举报
回复
友情up!
zzxap 2009-03-19
  • 打赏
  • 举报
回复
你在webconfig配置好访问回应的正则表达式就行了啊
EveryCase 2009-03-19
  • 打赏
  • 举报
回复
顶~~~~~~~~~~~~~
lidup 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zzxap 的回复:]
你在webconfig配置好访问回应的正则表达式就行了啊
[/Quote] 利用正则表达式对我的项目不可用,因为我的页面全部都是静态页面,没有必要用正则表达式
lidup 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wfyfngu 的回复:]
需要满足两个条件:

1) IIS将扩展名为html的文件提交给 ASP.NET 处理
2) ASP.NET 程序将 html 文件提交给相应的 httpmodule 处理

关键在于是否满足第1条。
[/Quote] 如果满足第一条那么html文件都运行不了

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧