簡體   English   中英

WCF + IIS 重定向失敗,有可能嗎?

[英]WCF + IIS Redirect failing, is it possible?

我正在嘗試將實時的、活動的 WCF 服務(SOAP,標准 HTTP 綁定配置)遷移到新服務器 [在 IIS 7 上],而無需使用。 有問題的 WCF 服務是“中央服務”,它保存配置信息並將控制權傳遞給其他服務。

新的服務器/服務就位,都使用 SSL/HTTPS 並具有有效的證書。

我在舊/源 IIS [IIS 6] 上設置了一個新的虛擬目錄作為測試,設置為“重定向到 URL”,輸入新服務 URL。 Using a web browser, URL forwards are done correctly and I can browse to the service, no HTTPS warnings or other messages - the important parts of the path and URL preserved and all seems to work OK.

但是 WCF 調用失敗。 我很確定它試圖將重定向響應解釋為 WCF SOAP 響應並且顯然失敗了,這是記錄的異常:

Error: The content type text/html; charset=UTF-8 of the response message does not match the content type of the binding (application/soap+xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 1024 bytes of the response were:
'<HTML><HEAD><link rel="alternate" type="text/xml" href="https://server-name-here/service-path-here.svc?disco"/>
<STYLE type="text/css">#content{ FONT-SIZE: 0.7em; PADDING-BOTTOM: 2em; MARGIN-LEFT: 30px}BODY{MARGIN-TOP: 0px; MARGIN-LEFT: 0px; COLOR: #000000; FONT-FAMILY: Verdana; BACKGROUND-COLOR: white}P{MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px; COLOR: #000000; FONT-FAMILY: Verdana}PRE{BORDER-RIGHT: #f0f0e0 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #f0f0e0 1px solid; MARGIN-TOP: -5px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; PADDING-BOTTOM: 5px; BORDER-LEFT: #f0f0e0 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #f0f0e0 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e5e5cc}.heading1{MARGIN-TOP: 0px; PADDING-LEFT: 15px; FONT-WEIGHT: normal; FONT-SIZE: 26px; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 3px; MARGIN-LEFT: -30px; WIDTH: 100%; COLOR: #ffffff; PADDING-TOP: 10px; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #003366}.intro{MARGIN-LEFT: -15px}</STYLE><TITLE>Service-Name-Here'.

有沒有辦法解決? 我正在嘗試減少來自服務器的負載以及持續/活躍的連接,因為該服務的負載相當大。 我希望轉發會導致客戶端緩存新的 URL,並且僅在重定向到期或類似情況時不頻繁地向初始 URL 發出請求。

我已經閱讀了各種問題和博客,例如說重定向將要求客戶端執行 GET 而不是 POST,但我沒有看到,到目前為止只是上面的消息。

You've pretty much answered your own question, the WCF HTTP handling code in the client cannot act upon an HTTP 301 or some similar response to redirect the service call to another URL like a browser can. 我無法記錄這一點,但 WCF 客戶端代碼僅處理為其配置的響應類型(在您的情況下為 HTTP+soap)。

如果您可以選擇將舊服務器升級到 Windows Server 2008,那么值得一看的是IIS 應用程序請求路由擴展 它易於安裝和配置,並且 URL 重寫規則非常靈活。 我已經將它用於代理(例如,通過面向 Internet 的 web 服務器公開內部托管服務)並且效果很好。 它不會消除在舊服務器上完成的工作,但會將其限制在少量。

如果操作系統升級不可行,那么上面鏈接的路由器服務建議是您的下一個最佳選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM