我想構建一個代理服務器向內部站點發送請求(隱藏起源),但同時檢查數據包並異步發佈 - 處理它們。IIS7應用程序請求路由(ARR反向代理)與託管模塊結合 - 超時
E.g.假設對http://www.foo.com的所有SOAP調用將轉至http://192.168.1.1,並且同時存儲在數據庫中用於後期分析。內部服務器是一個黑盒子,所以改變它的內容不在這個問題範圍之內。
無論如何,我已經配置了帶有反向代理的ARR,使用通配符做了URL重寫過濾器,所有作品都完美無缺。然後,我嘗試添加一個用C#編寫的託管HttpModule,並且連接到Application_BeginRequest和Application_EndRequest。我可以通過在Response.Filter上設置一個過濾器來訪問請求標頭,結束請求上的響應頭(應用程序池處於集成模式),甚至可以從輸出流中讀取響應內容,該過濾器將所有寫入緩存到額外的內存流中。
的問題是,我嘗試從請求讀取(模塊的BeginRequest處理程序中)輸入流的那一刻,ARR停留了一會兒,拋出一個
HTTP錯誤502.3 - 壞網關 操作超時處理程序 ApplicationRequestRoutingHandler 錯誤代碼0x80072ee2
所以超時。
與失敗請求跟蹤我看到展望:
MODULE_SET_RESPONSE_ERROR_STATUS 警告 模塊名= 「ApplicationRequestRouting」, 通知= 「EXECUTE_REQUEST_HANDLER」, 的HTTPStatus = 「502」,HttpReason = 「壞 網關」, HttpSubStatus = 「3」, 錯誤碼= 「2147954402」, ConfigExceptionInfo = 「」 SET_RESPONSE_ERROR_DESCRIPTION警告 ErrorDescription中= 「的操作超時 出」
現在網上的任何類似帖子都沒有幫助,因爲這不是超時錯誤(代理服務器有120秒設置,頁面在100毫秒內回答),以及我評論處理程序代碼的時刻試圖讀取FORM數據或InputStream數據,一切都起到了魅力。
即使我在讀取它後將輸入流的位置設置爲0,仍然會超時。 如果我讀取EndRequest上的輸入流,它將獲得0個字節,即使它是POST請求。 (這顯然是錯誤的)
ARR是否有一個錯誤,我試圖在重新路由它之前嘗試讀取輸入流?
物品的問題:在Windows Server 2008 R2 IIS 7.5 ARR v2的.NET Framework 3.5的 模塊
想法? 謝謝 /Cosmin
我在.NET 4.0上,這對我來說伎倆! Thanx robinet – 2012-08-09 13:12:39