肥皂错误:“服务器无法处理请求”“对象引用未设置为对象的实例”

当我在本地IIS中向我的服务发送SOAP请求时,一切正常。 当我将SOAP请求发送到在另一台主机上的IIS上运行的同一服务时,一切正常。

但是当另一个程序员向我的服务发送SOAP请求时,他通常会得到正确的响应,除了返回的服务中的一个方法:

  soap:Server Server was unable to process request. ---> Object reference not set to an instance of an object.   

我需要理解为什么他会收到这个错误。

他的SOAP请求与SOAP Request完全相同,但我的工作却没有。

谢谢大家的帮助。 我解决了这个问题。

soap请求中的“SoapAction”字段具有错误的URI

我建议使用HTTP嗅探器。 http嗅探器将显示SOAP属性。

“SOAPAction”属性应该类似于: http : //tempuri.org/YourServiceMethodName

如果您不确切知道错误发生的位置,则“对象引用”错误最难排除故障。 确保测试空值,因为此错误的最明显原因是未初始化的对象或者当预期包含对象或值时具有空值的变量。

此外,请确保您遵循error handling的最佳做法。 尝试尽可能早地捕获错误,除非您有意打算让更高级别的error handling程序捕获错误。 您收到此错误的事实意味着error handling不充分。

最后,我强烈建议为error handling程序包含某种日志记录机制。 将错误保存到事件日志或数据库,甚至通过电子邮件发送 – 任何内容,以便您可以确切地确定错误的位置。 请勿将错误显示给用户 。

有几种选择。 Asp.Net Health Monitoring在Web服务以及标准asp.net站点中运行良好。 还有ELMAH ,或者您可以编写自己的代码来执行此操作。

如果您遵循这些准则,则不会出现您不了解错误发生方式的情况。 您将获得正确排查故障所需的信息,您的应用将更加稳固。