我有一个带有customBinding端点的WCF服务。
<customBinding>
<binding name="customBinding" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00">
<binaryMessageEncoding>
<readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" />
</binaryMessageEncoding>
<httpTransport maxReceivedMessageSize="40194304" />
</binding>
</customBinding>
我的服务是:
<services>
<service name="Test2">
<endpoint address="" binding="customBinding" bindingConfiguration="customBinding" contract="MyServiceContract.ContractInterface">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
但是,在我的客户端应用程序中,每当我添加服务引用时,结果引用都是BasicHTTPBinding(在app.config中)
我可以做些什么来“强迫”客户端使用自定义绑定?
由于 亚历
答案 0 :(得分:1)
该服务未使用您指定的绑定。我的猜测是服务名称实际上是“MyServiceContract.Test2”(或类似的东西)而不仅仅是“Test2”,因此当WCF没有找到任何匹配的<service>
元素到服务类时,它只是使用了碰巧使用basicHttpBinding
的默认端点。
答案 1 :(得分:1)
您是否为自定义绑定定义了一个类(从System.ServiceModel.Channels.Binding派生的类)?
如果是这样,您是否已将新绑定添加到配置绑定扩展中?
<extensions>
<bindingExtensions>
<add name="myCustomeBinding" type="MyCustomeBinding, MyCustomeBindingLibrary" />
</bindingExtensions>
</extensions>
绑定的工作是定义用于创建WCF通道的“配方”。基本上,配方包含一系列绑定元素。
您在配方中选择的绑定元素决定了WCF通道将实现的通信的性质。
在绝对最小值时,您的绑定元素的配方需要包括:
如果你没有定义绑定的类,那么WCF没有选择,只能根据这两个绑定元素的默认值创建一个通道,因此可能设计为在没有绑定时切换到basicHttpBinding定义。
那是我的猜测。