是否可以拦截IIS下的Web请求?

时间:2014-03-25 10:47:36

标签: asp.net iis

我们使用IIS在端口80下部署了一些Web服务,例如:

http://localhost/service1/
http://localhost/service2/
...

现在我们想为这些服务做一些统计和身份验证工作,现在我有两个想法:

1更改每项服务

逐个添加统计信息和身份验证登录。

但我认为这不是一个好主意,因为我们有很多应用程序要更新,这些代码会被认真重复。

2创建一个单独的应用程序。

此应用程序应该可以拦截服务的每个请求,并执行相关的工作。我们有一天可以为这个应用程序添加其他功能。

这是我认为的灵活方式。但我不确定这是否可行?

顺便说一下,部署的服务的网址无法更改。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我认为您最好的方法是创建一个HTTP模块,然后将此模块添加到您的应用程序中,然后这些应用程序就可以拦截每个发送给它的主机应用程序。

从官方网页

  

HTTP模块是在每次发出请求时调用的程序集   你的申请。 HTTP模块作为ASP.NET的一部分进行调用   请求管道并可以访问整个生命周期事件   请求。因此,HTTP模块为您提供了检查的机会   传入请求并根据请求采取操作。他们也给   您有机会检查出站响应并进行修改。

有关此主题的更多信息,请访问以下链接:

http://msdn.microsoft.com/en-us/library/ms178468(v=vs.85).aspx

创建一个简单的HTTP模块 http://msdn.microsoft.com/en-us/library/ms227673(v=vs.100).aspx

作为截取调用的同一主题的一部分,我很高兴建议您阅读下面的文章,描述HTTP处理程序和放大器的各个方面。 HTTP模块。 http://msdn.microsoft.com/en-us/library/bb398986(v=vs.100).aspx

<强>更新 根据您的评论,您将需要创建一个ISAPI筛选器,它类似于HTTP模块的描述技术,但可以在IIS级别而不是应用程序级别。关于这种方式可以找到更多:http://msdn.microsoft.com/en-us/library/ms524610(v=vs.90).aspx

但请注意,您无法使用现有技能编写此类过滤器,因为它仅支持使用C / C ++进行编程。

希望这会有所帮助:)