2011-03-31 109 views
0

現在我有一個公共的Wcf REST服務A和幾個內部的wcf REST服務B,每個內部服務都是通過名字來標識的。是否有可能在服務A中創建路由器/代理,然後,當用戶請求服務A的接口時,它可以將請求重定向到基於名稱的內部服務?將wcf服務請求重定向到內部地址

我試着使用:

WebOperationContext.Current.OutgoingResponse.Location = targetInternalPath; 
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect; // or MovedPermanently 

所有作品,除了我們得到的客戶端頭細,這裏是提琴手細節:

換句話說,客戶端知道確切的內部地址,內容類型和內容長度不正確。所有不是我想要的。我一直在努力解決這個問題幾天,任何人有任何想法?

最好的問候。

Johnny

回答

0

我很困惑。你在小提琴手中看到的正是你要求的。您的服務A正在返回重定向響應。客戶端應該通過跟蹤位置標題中的URI來響應該重定向。

如果你真的想隱藏內部服務,那麼你需要使服務像代理一樣工作。它需要向內部服務本身發出請求,然後返回它返回的響應。

您是出於安全原因想要隱藏內部服務還是僅僅是客戶端事先不知道這些內部服務器?

+0

你好,感謝您的回覆。我只想將服務A接受的請求重定向到基於服務名稱的內部服務。 – johnneyzhang 2011-04-01 06:12:57

0

WCF RoutingService功能無法使用,因爲它只支持基於soap的綁定。您可以在MSDN論壇答案中使用Matthias建議的here的IIS 7 URL重寫模塊。您可以將其配置爲將呼叫重定向到基於內部REST的服務(an overview of its use at this link).我不確定它會幫助重新編寫響應標頭的內容,但值得一看。

+0

感謝您的回覆,我認爲IIS 7重寫模塊適合我,但我的應用程序用於SDK,我不希望客戶下載其他設置。 – johnneyzhang 2011-04-01 06:10:26

相關問題