IIS 7 WCF Webservices 通過 HTTPS 給出 404 錯誤
我有一些在 IIS 7.5 下執行的 WCF Web 服務,它們正確響應 http 請求,但在使用 SSL 呼叫方法時響應 404(未找到)錯誤。
該網站的綁定如下:
當呼叫http://127.0.0.1:8088/Public/PublicDataService.svc我得到預期的響應:
您已經創建了一個服務。
要測試此服務,您需要創建一個客戶端並使用它來呼叫該服務。您可以使用命令行中的 svcutil.exe 工具執行此操作,語法如下:等
同樣呼叫任何服務方法都可以,有一個最基本的方法叫做 CanConnect ,它只返回“true”
http://127.0.0.1:8088/Public/PublicDataService.svc/CanConnect
真的
使用 https 時,結果如下。
https://127.0.0.1/Public/PublicDataService.svc
您已經創建了一個服務。
要測試此服務,您需要創建一個客戶端並使用它來呼叫該服務。您可以使用命令行中的 svcutil.exe 工具執行此操作,語法如下:
https://127.0.0.1/Public/PublicDataService.svc/CanConnect
“/公共”應用程序中的伺服器錯誤。
無法找到該資源。
說明:HTTP 404。您要查找的資源(或其依賴項之一)可能已被刪除、名稱已更改或暫時不可用。請查看以下 URL 並確保其拼寫正確。
請求的 URL:/Public/PublicDataService.svc/CanConnect
版本資訊:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.6.1055.0
這讓我很困惑,呼叫 .svc 怎麼能工作,但它的內部方法給出 404?更令人困惑的是,這是有效的……事實上,我什至不確定它何時停止,即它是否對應於程式碼發布或伺服器更新檔等。
因此,網站的實際配置是:
Webservices (this is the root of the application / where the Web.Config sits) - Public (a windows directory, no addition config)
還有許多其他服務直接在根目錄下執行,在 http 和 https 下都執行良好。
關於可能導致這種情況的任何想法。
事實證明,這只是 web.config 文件中的一個錯誤。
SO上的這兩個答案是解決方案:
https://stackoverflow.com/a/26581326/1286358
而反過來
https://stackoverflow.com/a/26539003/1286358
奇怪的是,它曾經同時在 http 和 https 上工作,然後就停止了.. 其他地方肯定有其他一些配置更改..
編輯:完整性的實際修復
以下是在 web.config 中從“none”更改為“Transport”
<system.serviceModel> <bindings> <webHttpBinding> <binding> <security mode="Transport" />