1

我有一个带有操作合同的 wcf 服务,如下所示。

[OperationContract]       
bool IsUserAvailable(string userName);

[OperationContract]
[WebInvoke(
    Method = "GET",
    ResponseFormat = WebMessageFormat.Json,
    UriTemplate = "CreateUser?userId={userId}")]
bool CreateUser(string userId);

注意一个是用 webInvoke 属性定义的。我有 2 个使用这些方法的应用程序。应用程序 1 通过 http web 请求调用 createUser 方法,应用程序 2(wcf 客户端)直接调用 IsUserAvailable。如果我尝试在下面的 web.config 中定义基本 http 绑定和 webhttpBinding - 我会遇到问题。(绑定实例已经关联到监听 URI 'http://localhost:xxxx/BookStore.svc'。如果两个端点想要共享同一个 ListenUri,它们也必须共享同一个绑定对象实例。两个冲突的端点要么在 AddServiceEndpoint() 调用中指定,要么在配置文件中指定,要么是 AddServiceEndpoint() 和配置的组合。)

  <endpoint binding="basicHttpBinding" contract="BookStore.IBook" address=""></endpoint>

  <endpoint address=""
            binding="webHttpBinding"
            behaviorConfiguration="webBehavior"
            contract="BookStore.IBook" />

  <endpoint address="mex"
              binding="mexHttpBinding"
              behaviorConfiguration="mexBehavior"
              contract="IMetadataExchange" />

我的问题是 - 我怎样才能在不遇到问题的情况下对同一份合同进行不同的绑定。如果我没有指定 basichttp 绑定,我会收到错误消息(没有端点监听)

4

1 回答 1

4

您需要有不同的地址 - webHttpBinding 和 basicHttpBinding (如您所料)都在 http 方案上,因此您需要通过地址区分两个端点。

于 2012-08-09T07:30:45.787 回答