为什么我必须添加对URL / service.svc的引用,但是它会为URL / service.svc / soap创建绑定?

时间:2011-10-05 09:10:28

标签: c# wcf visual-studio-2010 soap

我正在将解决方案连接到基于WCF SOAP的Web服务。 URL的格式为:

  

http://upload.pete.vls.com/api/hmlapi.svc

但是,当我添加引用时,配置会出现以下内容:

<client>
    <endpoint address="http://upload.pete.vls.com/api/HmlApi.svc/soap"
                    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IHmlApi"
                    contract="ServiceReference1.IHmlApi" name="BasicHttpBinding_IHmlApi" />
</client>

我很困惑为什么当我用/ soap /添加引用时它不起作用。但是,当我不添加它时,“添加引用”功能会找到该服务并将其添加到/ soap /无论如何。

2 个答案:

答案 0 :(得分:1)

您输入的网址(没有soap部分)包含有关提供的服务传输类型的信息。 VS正在从中选择soap,并在配置中保存正确的端点地址。

但是,当提示您时,

因为它期望一个URL包含有关服务的信息 - 而不是最终将被使用的实际端点。

答案 1 :(得分:0)

因为服务器上的端点可能配置为

<services>
  <service name="YourService">
    <endpoint name="mySOAPEndpoint" address="soap" binding="someHttpBinding" contract="IYourService" />
  </service>
</services>

请注意,地址是“soap”,它是服务URI之后的相对路径(即在.svc之后)。如果您编写address =“”,则.svc URI与您的端点地址相同。