我有一個問題,如標題中所述。一些背景信息。在WCF .NET 4.0和IIS 6中,如何在沒有HTTP重定向的情況下返回靜態WSDL文件?
有一個像這樣的網址https://external_server.something.xy/SomeService/Something
這是通過反向代理暴露於外部世界。
- 反向代理剝離的HTTPS和流量轉發到 WCF服務作爲純HTTP和HTTPS適用於響應。
- 該綁定是basicHttpBinding(與
<transport clientCredentialType="Basic" proxyCredentialType="None" realm="" />
)。
爲此以及一些合同原因,將靜態WSDL文件(Something.wsdl)分發給客戶端。唉,仍然有很多代碼在沒有分佈式靜態WSDL文件的情況下檢索WSDL,然後動態生成調用(無論出於何種原因)。
如果我在<serviceMetadata httpGetEnabled="true" externalMetadataLocation="../Something.wsdl"/>
這樣的配置文件中設置,那麼客戶將會受到HTTP 307臨時重定向的歡迎。
無論如何,通過一些研究,我發現設置IIS主機標頭,我相信也會影響同一IIS上的許多其他應用程序。這是一個不可行的解決方案。有什麼我可以在web.config中配置,或者我應該調查服務器上還是反向代理上的URL重寫方案?
作爲一個額外的好處,如果我可以設置幫助頁面上顯示的URL,所以它不顯示內部服務器(以便鏈接也可以!)。
有點類似的情況。我們最終在逆向代理中編寫了一條匹配元數據查詢的規則。它基本上將請求轉發到外部文件,然後返回。我能想到的另一個「簡單」選項是使用[IWsdlExceportExtension](http://msdn.microsoft.com/en-us/library/system.servicemodel.description.iwsdlexportextension.aspx)。 – Veksi