2014-03-25 45 views
1

我们在港口部署一些Web服务80使用IIS,如:是否可以拦截IIS下的Web请求?

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

现在我们想要做的这些服务的一些统计数据和认证工作,现在我有两个想法:每个

1变化服务

逐一添加统计和认证登录。

但我认为这不是一个好主意,因为我们有这么多的应用程序需要更新,并且这些代码被严重重复。

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

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

这是我思考的灵活方式。但我不确定这是否可能?

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

有什么建议吗?

回答

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

为截取的同一主题的一部分散步呼叫,我hihgly建议您阅读以下文章,描述HTTP处理程序& HTTP模块的各个方面。 http://msdn.microsoft.com/en-us/library/bb398986(v=vs.100).aspx

更新 按你的意见,你需要创建一个ISAPI筛选器,它类似于HTTP模块的descried技术,但可以在IIS的水平,而不是应用程序级别。更多可以在这里找到关于这种方式:http://msdn.microsoft.com/en-us/library/ms524610(v=vs.90).aspx

但请注意,你不能使用你现有的技能来编写这样的过滤器,因为它只支持使用C/C++编程。

希望这有助于:)

+0

也许我没有让我清楚,服务是不同应用下这样http://pbrd.co/1iyeCiY请问这个suitation HTTP模块的工作? – hguser

+0

请检查我的更新答案。 –

+0

谢谢,我会试一试。 – hguser