在自定义SharePoint Web服务中调试错误

时间:2010-02-18 17:20:21

标签: sharepoint debugging sharepoint-2007 web-services moss

我创建了一个自定义的SharePoint Web服务,该服务已部署到测试环境并在其上成功测试。不幸的是,Web服务已停止工作,我正在尝试确定错误是什么。

Web服务现在在SOAP响应中返回以下错误:

SOAP:server
Server was unable to process request.  Object reference not set to an instance of an object.

部署的Web服务没有任何更改,因此我假设更新的部署已更改了SharePoint配置。我的Web服务.asmx部署到_vti_bin文件夹,程序集部署到GAC。我浏览http://servername:port/_vti_bin/MyCustomWebService.asmx时可以看到显示的WSDL文件。程序集中的Web方法使用日志记录(到Windows事件日志),但是当我尝试访问Web服务时没有发生日志记录,这表明调用没有进入Web方法。

鉴于上述情况,有人可以提供调试此问题的任何建议吗?

感谢。 MagicAndi。

更新
我现在已经意识到,当我从端点http://servername:port/Site/_vti_bin/MyCustomWebService.asmx使用Web服务时,它可以工作,但是当我使用端点http://servername:port/_vti_bin/MyCustomWebService.asmx时,Web服务会失败,如上所述。当我诊断出问题的原因时,我会进一步更新。

2 个答案:

答案 0 :(得分:2)

这是一个尝试捕获,以获得更多的异常信息。它将为您提供更多有助于调试问题的信息

try { 
// Do soap call here

} 
catch (System.Web.Protocols.SoapException soap_ex) 
{ 
  Console.WriteLine(soap_ex.Detail.OuterXML); 
} 
catch(System.Exception ex) 
{ 
  Console.WriteLine(ex.Message);         
}

答案 1 :(得分:1)

最简单的选择是附加调试器集以中断异常。如果您的基础结构规则不允许,您可能需要在服务器上的代码中添加一些额外的日志记录。如果你很幸运,肥皂信息中可能有足够的信息,但根据我的经验,空参考例外通常需要更容易找到更多信息。