2011-06-07 49 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。