將我的 ASP.NET 網站移至 Windows Server 2012 上的 IIS 8…服務失去:.svc 文件是可見的,但他們的方法給出了 404
我從 Windows Server 2003 上的 IIS 6 移出。
我可以瀏覽到 .svc 文件。如果我在瀏覽器中訪問http://example.com/Service.svc ,我會得到一個很好的標準“這是 Windows© Communication Foundation 服務”頁面。
但我無法瀏覽任何方法- 如果我在瀏覽器中訪問http://example.com/Service.svc/Method?parameter=xyz ,則會收到 404 錯誤。
**有沒有人見過這樣的事情?**有什麼想法或建議嗎?
我想我可能對這個問題有類似的問題:WCF on IIS8; *.svc 處理程序映射不起作用
但是症狀不同(看起來他們根本看不到 .svc 文件)並且沒有任何解決方案有效(我安裝了 WCF 功能的 Http Activation 等)。
好的,我放棄了,向微軟支付了 250 美元的支持。在技術人員的幫助下,我們找到了解決方案,昨晚確認這絕對是我們所有伺服器的解決方案:我們在 web.config 中為 WCF 服務完全禁用了 SSL:
<system.serviceModel> <bindings> <webHttpBinding> <binding> <security mode="Transport" />“傳輸”是指傳輸層安全性(TLS 是新的 SSL),因此是 HTTPS。將其更改為:
<system.serviceModel> <bindings> <webHttpBinding> <binding> <security mode="None" />事實證明,WCF 對您使用的是 HTTP 還是 HTTPS 非常敏感,如果您使用了錯誤的,您不會收到任何有用的錯誤,只有 404。
就我而言,新舊伺服器都配置為始終使用 HTTPS 以確保安全。但在新伺服器上,負載均衡器上的 SSL (TLS) 加密終止。在這種情況下,加密只發生在使用者的瀏覽器和我們的負載均衡器之間,我們的負載均衡器和 Web 伺服器之間的流量是未加密的 HTTP。
所以服務正在監聽 HTTPS,當請求來自 HTTP 時,它完全忽略了它。
(所有其他線上討論的類似問題都集中在解除安裝和重新安裝 IIS 和 ASP.NET 以及 WCF 和 HTTP 啟動等,所以我希望這對某人有所幫助。如果您對 MS 堆棧有疑問,我推薦 MS Support ‘沒有及時回答。這肯定比浪費幾個小時試圖單獨修復它便宜得多)。