Created
May 5, 2014 22:04
-
-
Save Isaac-Kleinman/fbcb85557ebba04a697d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.ServiceModel.Channels; | |
using System.Xml; | |
namespace eMedNySOAPClient | |
{ | |
public class CustomTextMessageBindingElement : MessageEncodingBindingElement | |
{ | |
private MessageVersion msgVersion; | |
private string mediaType; | |
private string encoding; | |
private XmlDictionaryReaderQuotas readerQuotas; | |
public CustomTextMessageBindingElement( ) | |
{ | |
MessageVersion = MessageVersion.Soap11; | |
mediaType = "text/xml"; | |
readerQuotas = new XmlDictionaryReaderQuotas( ); | |
} | |
public override MessageVersion MessageVersion | |
{ | |
get | |
{ | |
return this.msgVersion; | |
} | |
set | |
{ | |
if (value == null) | |
throw new ArgumentNullException("value"); | |
this.msgVersion = value; | |
} | |
} | |
public string MediaType | |
{ | |
get | |
{ | |
return this.mediaType; | |
} | |
set | |
{ | |
if (value == null) | |
throw new ArgumentNullException("value"); | |
this.mediaType = value; | |
} | |
} | |
public string Encoding | |
{ | |
get | |
{ | |
return this.encoding; | |
} | |
set | |
{ | |
if (value == null) | |
throw new ArgumentNullException("value"); | |
this.encoding = value; | |
} | |
} | |
// This encoder does not enforces any quotas for the unsecure messages. The | |
// quotas are enforced for the secure portions of messages when this encoder | |
// is used in a binding that is configured with security. | |
public XmlDictionaryReaderQuotas ReaderQuotas | |
{ | |
get | |
{ | |
return this.readerQuotas; | |
} | |
} | |
#region IMessageEncodingBindingElement Members | |
public override MessageEncoderFactory CreateMessageEncoderFactory() | |
{ | |
return new CustomTextMessageEncoderFactory( MediaType, MessageVersion); | |
} | |
#endregion | |
public override BindingElement Clone() | |
{ | |
return new CustomTextMessageBindingElement( ); | |
} | |
public override IChannelFactory<TChannel> BuildChannelFactory<TChannel>(BindingContext context) | |
{ | |
if (context == null) | |
throw new ArgumentNullException("context"); | |
context.BindingParameters.Add(this); | |
return context.BuildInnerChannelFactory<TChannel>(); | |
} | |
public override bool CanBuildChannelFactory<TChannel>(BindingContext context) | |
{ | |
if (context == null) | |
throw new ArgumentNullException("context"); | |
return context.CanBuildInnerChannelFactory<TChannel>(); | |
} | |
public override IChannelListener<TChannel> BuildChannelListener<TChannel>(BindingContext context) | |
{ | |
if (context == null) | |
throw new ArgumentNullException("context"); | |
context.BindingParameters.Add(this); | |
return context.BuildInnerChannelListener<TChannel>(); | |
} | |
public override bool CanBuildChannelListener<TChannel>(BindingContext context) | |
{ | |
if (context == null) | |
throw new ArgumentNullException("context"); | |
context.BindingParameters.Add(this); | |
return context.CanBuildInnerChannelListener<TChannel>(); | |
} | |
public override T GetProperty<T>(BindingContext context) | |
{ | |
if (typeof(T) == typeof(XmlDictionaryReaderQuotas)) | |
{ | |
return (T)(object)this.readerQuotas; | |
} | |
else | |
{ | |
return base.GetProperty<T>(context); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment