2011-06-07 132 views
12

我一直在努力幾天this problem,學習了很多關於綁定過程的東西。但有一件事讓我感到困惑:各種鏈接(例如參見thisthat)顯式聲明「默認情況下,WCF項目是使用WsHttpBinding創建的」,但這並不是我所看到的。 這是我做的:什麼是默認的WCF綁定?

  1. 打開Visual Studio 2010,並選擇新建項目/ Visual C#中/ WCF服務應用
  2. 不要碰裏面的代碼什麼,設置一個本地IIS URL的服務(比如http://localhost/WcfService7
  3. 開放的soapUI,然後選擇文件/新建皁UI項目/進入新創建的WSDL的網址:http://localhost/WcfService7/Service1.svc?wsdl,不接觸任何其他選項
  4. 接口屬性:SOAP版本= SOAP 1.1,綁定= 「BasicHttpBinding_IService1」(即使它只是一個名字,但它是一個暗示)
  5. 打開Altova XmlSpy並選擇SOAP /創建新的SOAP請求/輸入wsdl /選擇任何操作的url
  6. SOAP /更改SOAP請求參數/確保選中「作爲SOAP + XML發送(SOAP 1.2)」
  7. SOAP /發送請求給服務器:我得到的錯誤

    HTTP錯誤:無法發佈服務器上的 'localhost' 文件 '/WcfService7/Service1.svc'(415)

    發送錯誤的數據肥皂到'http://localhost/WcfService7/Service1.svc'HTTP錯誤:無法在服務器'10 .51上POST文件'/WcfService7/Service1.svc'。 0.108'(415)

任何解釋?謝謝

回答

11

當在IIS(使用WCF服務應用程序項目模板)中託管WCF服務時使用默認.svc文件(不更改其服務主機工廠)時,默認綁定爲basicHttpBinding。如果要更改默認綁定到wsHttpBinding必須使用:

<protocolMapping> 
    <add scheme="http" binding="wsHttpBinding"/> 
</protocolMapping> 

在服務的配置文件,但因爲你不需要wsHttpBinding它不會解決你的問題,我記得的Altova XMLSpy的是無法發送請求wsHttpBinding,因爲它僅支持沒有WS- *協議的基本SOAP堆棧。

2

缺省值是使用SOAP 1.1進行basichttpbinding。

這就是爲什麼你發送錯誤的原因是SOAP 1.2。