我们使用IIS在端口80
下部署了一些Web服务,例如:
http://localhost/service1/
http://localhost/service2/
...
现在我们想为这些服务做一些统计和身份验证工作,现在我有两个想法:
1更改每项服务
逐个添加统计信息和身份验证登录。
但我认为这不是一个好主意,因为我们有很多应用程序要更新,这些代码会被认真重复。
2创建一个单独的应用程序。
此应用程序应该可以拦截服务的每个请求,并执行相关的工作。我们有一天可以为这个应用程序添加其他功能。
这是我认为的灵活方式。但我不确定这是否可行?
顺便说一下,部署的服务的网址无法更改。
有什么建议吗?
答案 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 ++进行编程。
希望这会有所帮助:)