1

我有一个非常具体的问题.. 如果我创建一个 WCF 服务并且它有多个端点名称,我如何使用浏览器访问它?另外,我如何通过添加服务参考在我的客户端应用程序中访问它?

像我的配置代码:

<services>
  <service name="MultipleEndpoint.SampleService" behaviorConfiguration="MultipleEndpoint.SampleService">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:55052/SampleService.svc"/>
      </baseAddresses>
    </host>
    <endpoint address="/basic" binding="basicHttpBinding" contract="MultipleEndpoint.ISampleService" bindingConfiguration="basicBinding" >
    </endpoint>
    <endpoint address="/wsHttp" binding="wsHttpBinding" contract="MultipleEndpoint.ISampleService" bindingConfiguration="wsBinding" >          
    </endpoint>
    <endpoint address="/webHttp" binding="webHttpBinding" contract="MultipleEndpoint.ISampleService" behaviorConfiguration="REST">
    </endpoint>        
  </service>
</services>

现在,当我尝试使用

http://localhost:55052/SampleService.svc/basic or 
http://localhost:55052/SampleService.svc/wsHttp 

它给了我页面/资源未找到 IE 标准错误消息...同时我想知道如何在我的客户端应用程序中添加这种类型的 url 作为服务引用?

4

1 回答 1

0

这些服务地址是不同的,它们并不严格需要是可浏览的,这意味着您无法浏览服务以查找类似http://localhost:55052/SampleService.svc/basic的端点。这些地址用于区分通信中的端点

如果您看到服务的 wsdl,那么所有这些端点的地址都在此处指定。

如果您通过“添加服务引用”创建服务代理,则所有端点都在配置中单独创建,例如..

<client>
    <endpoint address="http://localhost:54671/Service1.svc/basic"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
            contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" />

    <endpoint address="http://localhost:54671/Service1.svc/ws" binding="wsHttpBinding"
            bindingConfiguration="WSHttpBinding_IService1" contract="ServiceReference1.IService1"
            name="WSHttpBinding_IService1">
    </endpoint>
    ...
</client>

假设您想使用基本的 http 端点与服务通信,那么您可以通过name在 ctor 中传递相应的端点配置来为其创建代理。

前任。

// this will uses the basic http endpoint.
Service1Client client = new Service1Client("BasicHttpBinding_IService1");
于 2012-07-12T15:53:55.667 回答