我的操作合同的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()和config的组合中指定。)
<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绑定,我得到错误(没有端点监听)
答案 0 :(得分:4)
你需要有不同的地址 - webHttpBinding和basicHttpBinding(正如你所期望的)都是http方案,所以你需要通过它们的地址来区分这两个端点。