137 lines
3.6 KiB
C#
137 lines
3.6 KiB
C#
|
//------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//------------------------------------------------------------
|
||
|
|
||
|
namespace System.ServiceModel
|
||
|
{
|
||
|
using System.Xml;
|
||
|
using System.ServiceModel;
|
||
|
using System.ServiceModel.Description;
|
||
|
using System.Xml.Schema;
|
||
|
using System.Xml.Serialization;
|
||
|
using System.Runtime.Serialization;
|
||
|
|
||
|
public class FaultCode
|
||
|
{
|
||
|
FaultCode subCode;
|
||
|
string name;
|
||
|
string ns;
|
||
|
EnvelopeVersion version;
|
||
|
|
||
|
public FaultCode(string name)
|
||
|
: this(name, "", null)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public FaultCode(string name, FaultCode subCode)
|
||
|
: this(name, "", subCode)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public FaultCode(string name, string ns)
|
||
|
: this(name, ns, null)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public FaultCode(string name, string ns, FaultCode subCode)
|
||
|
{
|
||
|
if (name == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("name"));
|
||
|
if (name.Length == 0)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("name"));
|
||
|
|
||
|
if (!string.IsNullOrEmpty(ns))
|
||
|
NamingHelper.CheckUriParameter(ns, "ns");
|
||
|
|
||
|
this.name = name;
|
||
|
this.ns = ns;
|
||
|
this.subCode = subCode;
|
||
|
|
||
|
if (ns == Message12Strings.Namespace)
|
||
|
this.version = EnvelopeVersion.Soap12;
|
||
|
else if (ns == Message11Strings.Namespace)
|
||
|
this.version = EnvelopeVersion.Soap11;
|
||
|
else if (ns == MessageStrings.Namespace)
|
||
|
this.version = EnvelopeVersion.None;
|
||
|
else
|
||
|
this.version = null;
|
||
|
}
|
||
|
|
||
|
public bool IsPredefinedFault
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return ns.Length == 0 || version != null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public bool IsSenderFault
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (IsPredefinedFault)
|
||
|
return name == (this.version ?? EnvelopeVersion.Soap12).SenderFaultName;
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public bool IsReceiverFault
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (IsPredefinedFault)
|
||
|
return name == (this.version ?? EnvelopeVersion.Soap12).ReceiverFaultName;
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public string Namespace
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return ns;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public string Name
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return name;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public FaultCode SubCode
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return subCode;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static FaultCode CreateSenderFaultCode(FaultCode subCode)
|
||
|
{
|
||
|
return new FaultCode("Sender", subCode);
|
||
|
}
|
||
|
|
||
|
public static FaultCode CreateSenderFaultCode(string name, string ns)
|
||
|
{
|
||
|
return CreateSenderFaultCode(new FaultCode(name, ns));
|
||
|
}
|
||
|
|
||
|
public static FaultCode CreateReceiverFaultCode(FaultCode subCode)
|
||
|
{
|
||
|
if (subCode == null)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("subCode"));
|
||
|
return new FaultCode("Receiver", subCode);
|
||
|
}
|
||
|
|
||
|
public static FaultCode CreateReceiverFaultCode(string name, string ns)
|
||
|
{
|
||
|
return CreateReceiverFaultCode(new FaultCode(name, ns));
|
||
|
}
|
||
|
}
|
||
|
}
|