我创建了一个自定义的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服务会失败,如上所述。当我诊断出问题的原因时,我会进一步更新。
答案 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)
最简单的选择是附加调试器集以中断异常。如果您的基础结构规则不允许,您可能需要在服务器上的代码中添加一些额外的日志记录。如果你很幸运,肥皂信息中可能有足够的信息,但根据我的经验,空参考例外通常需要更容易找到更多信息。