WebService开发中SoapException的用法
时间:2010-11-24 来源:平常心成大事
这里有两种写法,
第一种, 就是网上流转某大虾写的,用一个String变量任意拼构一个XML字符串,然后用XmlDocument load XML字符串,再将DocumentElement转入到SoapException中构造函数中:
string strXmlOut = @"<detail>" //注意,一定要用小写的detail节点!
+ "<Error>"
+ "<ErrorNumber>" + errorNumber + "</ErrorNumber>"
+ "<ErrorMessage>" + errorMessage + "</ErrorMessage>"
+ "<ErrorSource>" + errorSource + "</ErrorSource>"
+ "</Error>"
+ "</detail>";
//装载为Xml文档
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(strXmlOut);
//实例化SoapException
SoapException soapEx = new SoapException(errorMessage, faultCodeLocation, uri, xmlDoc.DocumentElement);
throw soapEx;
第二种,就是MSDN里介绍的正规写法:
XmlDocument doc = new XmlDocument();
XmlNode node = doc.CreateNode(XmlNodeType.Element,
SoapException.DetailElementName.Name,
SoapException.DetailElementName.Namespace);
XmlNode xmlErrorNumber= doc.CreateNode(XmlNodeType.Element, "ErrorNumber", "http://tempuri.org/");
xmlErrorNumber.InnerText = exceptionInfo.ErrorCode; //exceptionInfo是一个自定义类型
node.AppendChild(xmlErrorNumber);
XmlNode xmlErrorMessage= doc.CreateNode(XmlNodeType.Element, "ErrorMessage", "http://tempuri.org/");
xmlErrorNumber.InnerText = exceptionInfo.StackTrace;
SoapException soapEx = new SoapException(exceptionInfo.ErrorMessage, faultCodeLocation, uri, node);
throw soapEx;
参考:http://www.techmango.com/blog/article/DotNet/ASP_NET_SoapExtension_SoapException.htm