我们有两个用VB.NET用ASP.NET Web服务编写的服务,它们通过生成的代理类相互通信。
对于仅一个端点(更多端点),当我们从服务A调用服务B时,在构造XML时,NullReferenceException
中的WriteHeaders
函数中会抛出System.Web.Services.Protocols
有效负载(在服务A中)。请注意,不能在开发计算机上或在debug
配置版本(仅release
)中重现该问题。
到目前为止,我已经尝试在可以重现问题的环境中为远程调试器附加.Net符号,但是如上所述,在部署debug
配置版本时,它工作正常。
另外,我们已经记录了此调用的所有参数和标头,并且在正常工作和非正常工作的情况下,值都相同。
与代理客户端的服务呼叫
...
_serviceClient.HeaderNameValue = New HeaderName(params)
_serviceClient.EndpointOnServiceB(params)
...
注意:调用EndpointOnServiceB
时,它将进入Reference.vb
文件,在该文件中我记录了所有参数和标头值。一切看起来都很好。
我们正在为其他端点做完全相同的事情,它们工作得很好。
堆栈跟踪
0
{"assembly":"System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.Services.Protocols.SoapHeaderHandling.WriteHeaders","level":0,"line":0}
1
{"assembly":"System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.Services.Protocols.SoapHttpClientProtocol.Serialize","level":1,"line":0}
2
{"assembly":"System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a","method":"System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke","level":2,"line":0}