You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,95 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
namespace System.ServiceModel
|
||||
{
|
||||
using System;
|
||||
using System.Xml;
|
||||
using System.Text;
|
||||
using System.Globalization;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ServiceModel.Channels;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
[Serializable]
|
||||
internal class MustUnderstandSoapException : CommunicationException
|
||||
{
|
||||
// for serialization
|
||||
public MustUnderstandSoapException() { }
|
||||
protected MustUnderstandSoapException(SerializationInfo info, StreamingContext context) : base(info, context) { }
|
||||
|
||||
|
||||
Collection<MessageHeaderInfo> notUnderstoodHeaders;
|
||||
EnvelopeVersion envelopeVersion;
|
||||
|
||||
public MustUnderstandSoapException(Collection<MessageHeaderInfo> notUnderstoodHeaders, EnvelopeVersion envelopeVersion)
|
||||
{
|
||||
this.notUnderstoodHeaders = notUnderstoodHeaders;
|
||||
this.envelopeVersion = envelopeVersion;
|
||||
}
|
||||
|
||||
public Collection<MessageHeaderInfo> NotUnderstoodHeaders { get { return this.notUnderstoodHeaders; } }
|
||||
public EnvelopeVersion EnvelopeVersion { get { return this.envelopeVersion; } }
|
||||
|
||||
internal Message ProvideFault(MessageVersion messageVersion)
|
||||
{
|
||||
string name = this.notUnderstoodHeaders[0].Name;
|
||||
string ns = this.notUnderstoodHeaders[0].Namespace;
|
||||
FaultCode code = new FaultCode(MessageStrings.MustUnderstandFault, this.envelopeVersion.Namespace);
|
||||
FaultReason reason = new FaultReason(SR.GetString(SR.SFxHeaderNotUnderstood, name, ns), CultureInfo.CurrentCulture);
|
||||
MessageFault fault = MessageFault.CreateFault(code, reason);
|
||||
string faultAction = messageVersion.Addressing.DefaultFaultAction;
|
||||
Message message = System.ServiceModel.Channels.Message.CreateMessage(messageVersion, fault, faultAction);
|
||||
if (this.envelopeVersion == EnvelopeVersion.Soap12)
|
||||
{
|
||||
this.AddNotUnderstoodHeaders(message.Headers);
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
void AddNotUnderstoodHeaders(MessageHeaders headers)
|
||||
{
|
||||
for (int i = 0; i < notUnderstoodHeaders.Count; ++i)
|
||||
{
|
||||
headers.Add(new NotUnderstoodHeader(notUnderstoodHeaders[i].Name, notUnderstoodHeaders[i].Namespace));
|
||||
}
|
||||
}
|
||||
|
||||
class NotUnderstoodHeader : MessageHeader
|
||||
{
|
||||
string notUnderstoodName;
|
||||
string notUnderstoodNs;
|
||||
|
||||
public NotUnderstoodHeader(string name, string ns)
|
||||
{
|
||||
this.notUnderstoodName = name;
|
||||
this.notUnderstoodNs = ns;
|
||||
}
|
||||
|
||||
public override string Name
|
||||
{
|
||||
get { return Message12Strings.NotUnderstood; }
|
||||
}
|
||||
|
||||
public override string Namespace
|
||||
{
|
||||
get { return Message12Strings.Namespace; }
|
||||
}
|
||||
|
||||
protected override void OnWriteStartHeader(XmlDictionaryWriter writer, MessageVersion messageVersion)
|
||||
{
|
||||
writer.WriteStartElement(this.Name, this.Namespace);
|
||||
writer.WriteXmlnsAttribute(null, notUnderstoodNs);
|
||||
writer.WriteStartAttribute(Message12Strings.QName);
|
||||
writer.WriteQualifiedName(notUnderstoodName, notUnderstoodNs);
|
||||
writer.WriteEndAttribute();
|
||||
}
|
||||
|
||||
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
|
||||
{
|
||||
// empty
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user