0

我需要一些帮助来确定如何解决似乎忽略传入参数的 ASP.Net 2 asmx Web 服务的问题。

我有一个接受字符串的 ASMX 服务,使用 SAP API 做一些工作,并将操作结果作为字符串返回。它在开发环境中运行良好,但在生产中失败,因为它似乎没有接收到传入的参数。

这是一个有代表性的代码片段:

在消费代码中,“TextIdentifier”是传递给调用 Web 服务的方法的字符串

SAPProxyWebService.SAPProxyWebService webservice = new SAPProxyWebService.SAPProxyWebService();
return webservice.GetEncodedText( TextIdentifier );

web方法声明如下:

[WebMethod()]
public string GetEncodedText(string TextIDString)
{
   do some stuff with TextIDString;
   return results;
}

当我在调用 Web 方法的方法中记录 TextIdentifier 的值时,我得到了预期值。事实上,当我将其记录在与 Web 方法调用相同的行时,我看到了预期的输入。

但是,当我在 web 方法中记录 TextIDString 参数时,在任何其他操作之前,它为空。当我在 Web 方法中对特定值进行硬编码时,我会得到我期望的硬编码值的结果。

我应该寻找什么会导致 web 方法“丢失”传入参数?

4

2 回答 2

1

您是否尝试过使用提琴手?您应该能够查看 SOAP/您在客户端和服务器之间进行的任何数据包。

于 2010-02-05T21:04:03.397 回答
0

所以我不确定根本原因是什么,我的修复的哪个方面实际上解决了这个问题,但我最终做的是将 Web 服务部署在不同的位置并将客户端库指向它那里. 我通过我们的开发/测试架构部署了报告(包括客户端库),一切正常。然后,我将 Web 服务部署回其原始位置,然后将报告和库通过架构向上部署,并且报告在其原始位置与 Web 服务一起工作。

我怀疑客户端库/报告可能正在使用服务定义的缓存版本。对此没有意义的是,当我修改服务以记录发生的事情时,代码中引发异常(空引用异常)的位置将移动,并且报告将反映新位置(即行号)在执行相同语句的代码中。

于 2010-02-11T02:56:18.683 回答