如何捕获Microsoft.SharePoint.SoapServer.SoapServerException?

时间:2010-06-02 18:13:48

标签: sharepoint moss wss

我对如何捕获Microsoft.SharePoint.SoapServer.SoapServerException的特定错误类型感到有点困惑,我将解释原因,并且我已经在下面包含了一个代码示例供您查看。

如您所知,有两种方式可以与MOSS互动。

  1. 对象模型(仅在MOSS服务器上运行)
  2. Web服务(可以在查询MOSS服务器的远程计算机上运行)
  3. 因此,根据代码示例,我使用Web服务来查询MOSS,因此我没有在运行这些Web服务的远程服务器上安装sharepoint,并且没有安装MOSS,因此无法引用SharePoint DLL来获取特定错误类型:Microsoft.SharePoint.SoapServer.SoapServerException。

    如果我不能引用DLL那么我应该如何抓住这个特定的错误类型?

    System.Xml.XmlNode ndListView = wsLists.GetListAndView(ListName, "");
                string strListID = ndListView.ChildNodes[0].Attributes["Name"].Value;
                string strViewID = ndListView.ChildNodes[1].Attributes["Name"].Value;
    
                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                System.Xml.XmlElement batchElement = doc.CreateElement("Batch");
                batchElement.SetAttribute("OnError", "Continue");
                batchElement.SetAttribute("ListVersion", "1");
                batchElement.SetAttribute("ViewName", strViewID);
    
                batchElement.InnerXml = "<Method ID='1' Cmd='Update'>" +
                "<Field Name='DeliveryStatus'>" + newStatus.ToString() + "</Field>" +
                "<Where><Eq><FieldRef Name='ID' /><Value Type='Text'>" + id + "</Value></Eq></Where></Method>";
    
                try
                {
                    wsLists.UpdateListItems(strListID, batchElement);
                    return true;
                }
                catch (Microsoft.SharePoint.SoapServer.SoapServerException ex)
                {
    
                }
    

2 个答案:

答案 0 :(得分:4)

它实际上是一个System.Web.Services.Protocols.SoapException

答案 1 :(得分:0)

参考:How to get FaultException details?

catch (FaultException fe)
    {
         MessageFault msgFault = fe.CreateMessageFault();
         XmlElement elm = msgFault.GetDetail<XmlElement>();
         var exceptionDetails = elm.InnerText;
    }