2010-02-18 31 views
0

我已经创建了部署到并成功在测试环境中进行测试的自定义SharePoint Web服务。不幸的是,Web服务已停止工作,我正在尝试确定错误是什么。调试自定义SharePoint 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,上述的网络服务失败。当我诊断问题的原因时,我会进一步更新。

回答

1

最简单的方法是附加一个调试器设置为例外打破。如果您的基础架构规则不允许这样做,那么您可能需要在服务器上的代码中添加一些额外的日志记录。如果幸运的话,soap消息中可能有足够的信息,但根据我的经验,空引用异常通常需要更多信息才能轻松找到。

+0

Tom,因为这是一个测试环境,所以安装Visual Studio来调试问题不是一个选项。另外,我已经登录了Web服务代码,如上所述,并且根本不会被调用。问题不在Web服务代码中,位在与端点的连接中。 – MagicAndi

+0

汤姆,被接受为答案。 – MagicAndi

2

这是一个尝试捕获异常的更多infomraion。它会给你更多的信息,这将有助于调试您的问题

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);   
} 
+0

Chris,谢谢。不应该是System.Web.Services.Protocols.SoapException? – MagicAndi

+0

这只会显示返回给客户端的错误,并且有关Web服务内部状态的信息有限。 –

+1

Chris,再次感谢+1。 – MagicAndi

相关问题