ASMX Web服务丢弃传入的参数

时间:2010-02-05 20:28:08

标签: c# web-services parameters asmx webmethod

我需要一些帮助,找出如何解决ASP.Net 2 asmx webservice的问题,这似乎忽略了传入的参数。

我有一个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方法调用记录在同一行时,我看到了预期的输入。

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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