2014-03-25 75 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