프로그래밍 방식으로 구성된 WCF 클라이언트 (System.ServiceModel.ClientBase)로 작업하고 있습니다. 이 WCF 클라이언트는 기본적으로 TextMessageEncodingBindingElement가있는 CustomBinding을 사용하여 구성됩니다.WCF System.ServiceModel.ClientBase의 Endpoint.Binding 변경이 작동하지 않습니다.
이제 Mtom 인코딩으로 전환하려고 할 때 클라이언트의 Endpoint.Binding 속성을 변경하여 올바르게 작동합니다. Endpoint.Binding 속성 show가 변경되었습니다.
불행히도 WCF 서비스가 노출하는 메서드 중 하나를 실행하면 여전히 TextMessageEncoding이 사용되며 그 이유를 파악할 수 없습니다.
나는 그것이 새로운 ClientBase을 구성하고 생성자에서 새로운 EndPointBinding를 전달하여,하지만 일이있어 :
socialProxy = new SocialProxyClient(SocialProxyClientSettings.SocialProxyMTomEndPointBinding, new EndpointAddress(SocialProxyClientSettings.SocialProxyEndPointAddress));
하지만이 때 작동하지 않습니다
socialProxy.Endpoint.Binding = SocialProxyClientSettings.SocialProxyMTomEndPointBinding;
이 나의 정의는 EndPointBindings위한 것입니다 :
public static TextMessageEncodingBindingElement TextMessageEncodingBindingElement
{
get
{
if (_textMessageEncodingBindingElement == null)
{
_textMessageEncodingBindingElement = new TextMessageEncodingBindingElement() { MessageVersion = MessageVersion.Soap11 };
_textMessageEncodingBindingElement.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas()
{
MaxDepth = 32,
MaxStringContentLength = 5242880,
MaxArrayLength = 204800000,
MaxBytesPerRead = 5242880,
MaxNameTableCharCount = 5242880
};
}
return _textMessageEncodingBindingElement;
}
}
public static MtomMessageEncodingBindingElement MtomMessageEncodingBindingElement
{
get
{
if (_mtomMessageEncodingBindingElement == null)
{
_mtomMessageEncodingBindingElement = new MtomMessageEncodingBindingElement();
_mtomMessageEncodingBindingElement.MaxReadPoolSize = TextMessageEncodingBindingElement.MaxReadPoolSize;
_mtomMessageEncodingBindingElement.MaxWritePoolSize = TextMessageEncodingBindingElement.MaxWritePoolSize;
_mtomMessageEncodingBindingElement.MessageVersion = TextMessageEncodingBindingElement.MessageVersion;
_mtomMessageEncodingBindingElement.ReaderQuotas.MaxDepth = TextMessageEncodingBindingElement.ReaderQuotas.MaxDepth;
_mtomMessageEncodingBindingElement.ReaderQuotas.MaxStringContentLength = TextMessageEncodingBindingElement.ReaderQuotas.MaxStringContentLength;
_mtomMessageEncodingBindingElement.ReaderQuotas.MaxArrayLength = TextMessageEncodingBindingElement.ReaderQuotas.MaxArrayLength;
_mtomMessageEncodingBindingElement.ReaderQuotas.MaxBytesPerRead = TextMessageEncodingBindingElement.ReaderQuotas.MaxBytesPerRead;
_mtomMessageEncodingBindingElement.ReaderQuotas.MaxNameTableCharCount = TextMessageEncodingBindingElement.ReaderQuotas.MaxNameTableCharCount;
}
return _mtomMessageEncodingBindingElement;
}
}
사람이 왜 장을 설명 할 수 Endpoint.Binding 프로그래밍 방식으로 작동하지 않는다?
@Junto - 감사합니다. –