Iis-7

IIS 7 WCF Webservices 通過 HTTPS 給出 404 錯誤

  • May 16, 2016

我有一些在 IIS 7.5 下執行的 WCF Web 服務,它們正確響應 http 請求,但在使用 SSL 呼叫方法時響應 404(未找到)錯誤。

該網站的綁定如下:

IIS 7 站點綁定

當呼叫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" />

引用自:https://serverfault.com/questions/776390