WebService里奇怪的参数值偏移现象?

简介:
今日在做一个WebService,在客户端用SOAP直接调用此WebService,但运行时的结果却怪怪的..

以下是WebService端的代码函数:
         /// <summary>
        
/// 发送邮件
        
/// </summary>
        
/// <param name="key">验证密匙</param>
        
/// <param name="from">发件人</param>
        
/// <param name="recipients">收件人</param>
        
/// <param name="subject">主题</param>
        
/// <param name="body">邮件正文</param>
        
/// <returns>是否发送成功</returns>

        [WebMethod]
        
public   bool  Send( string  key,  string  from,  string  recipients,  string  subject,  string  body)
        
{
            
if (string.IsNullOrEmpty(from) || string.IsNullOrEmpty(recipients)) return false;

            
//验证会话
            if (!CheckSessionPermission(key)) return false;

            
try
            
{
                
//new EmailSender().Send(from, recipients, subject, body);
                return true;
            }

            
catch 
            
{
                
return false;
            }

        }


下面是客户端使用SOAP调用的代码:
         /// <summary>
        
/// 发送邮件
        
/// </summary>
        
/// <param name="from">发件人</param>
        
/// <param name="recipients">收件人</param>
        
/// <param name="subject">主题</param>
        
/// <param name="body">邮件正文</param>
        
/// <returns>是否发送成功</returns>

        [SoapDocumentMethod( " http://temp.uri/Service/Email/Send "
            RequestNamespace 
=   " http://temp.uri/Service/Email/ "
            ResponseNamespace 
=   " http://temp.uri/Service/Email/ " ,
            Use 
=  System.Web.Services.Description.SoapBindingUse.Default,
            ParameterStyle 
=  SoapParameterStyle.Wrapped
        )]
        
public   bool  Send( string  from,  string  recipients,  string  subject,  string  body)
        
{
            
object[] results = this.Invoke("Send"new object[] this.Key, from, recipients, subject, body });
            
return (bool)results[0];
        }


下面是一个示例的调用代码:
            EmailServiceClient emailClient  =   new  EmailServiceClient( " http://localhost/Service/EmailService.asmx " );
            emailClient.Key 
=   " ddd " ;
            emailClient.Send(
"from @test.com " , " to@test.com" " 测试的邮件 " " 这是一封测试的邮件,收到吗? " );

现在问题就来了.上面的代码运行后,发现参数有移位现象!!即WebService端函数里参数获取到的值为:from="ddd",recipients="from@test.com",subject="to@test.com",body="测试的邮件".而key的值却是null

弄了几次都是一样的情况.搞不懂.不知是什么原因导致的:(

后来再写了一个测试函数,却又发现如果客户端(SOAP)里的传递参数名如果和WebService里的函数的参数名不同,则其值永远获取不到!永远为null!!但又不会出现参数值偏移的问题!!!
下面就是这个古怪的函数:
WebService代码:
        [WebMethod]
        
public   bool  Add( int  i,  string  text,  string  bb)
        
{
            
string s = text;

            
return false;
        }


客户端代码:
        [SoapDocumentMethod( " http://temp.uri/Service/Email/Add " ,
            RequestNamespace 
=   " http://temp.uri/Service/Email/ " ,
            ResponseNamespace 
=   " http://temp.uri/Service/Email/ " ,
            Use 
=  System.Web.Services.Description.SoapBindingUse.Default,
            ParameterStyle 
=  SoapParameterStyle.Wrapped
        )]
        
public   void  Add( int  i,  string  text,  string  bb)
        
{
            
object[] results = this.Invoke("Add"new object[] { i , text, bb});
        }

上面运行是正常的,但如果将客户端里的string text 这里改一下名称,如为 string dd 则运行后,WebService端里的text的值一直为null!!

以下是值偏移的截图:
测试代码:
            emailClient.Key  =   " key " ;
            emailClient.Send(
" from " " recipients " " subject " " body " );

客户端的值载图( recipients参数的值为" recipients"):



WebService端的载图:( recipients参数的值已变成了" from"!!!而key的值是为null的,form的值却为"key"!!):



各位能告诉我为什么吗?是不是我哪里错了??? (因为急于需要答案,占用一下博客首页,希望DUDU谅解,谢谢)
本文转自Kingthy博客园博客,原文链接:http://www.cnblogs.com/kingthy/archive/2007/12/26/1015709.html ,如需转载请自行联系原作者
相关文章
|
20天前
|
编译器 C语言
成功解决“函数用于调用的参数太少/太多”问题
成功解决“函数用于调用的参数太少/太多”问题
24 0
|
5月前
|
Serverless
函数计算在执行请求的过程中遇到了意外的错误
函数计算在执行请求的过程中遇到了意外的错误
62 1
|
2月前
|
文字识别 小程序 开发工具
mPaaS小程序问题之调用选图片的时候报错如何解决
mPaaS小程序是阿里巴巴移动平台服务(mPaaS)推出的一种轻量级应用解决方案,旨在帮助开发者快速构建跨平台的小程序应用;本合集将聚焦mPaaS小程序的开发流程、技术架构和最佳实践,以及如何解决开发中遇到的问题,从而助力开发者高效打造和维护小程序应用。
38 0
|
11月前
|
XML JSON 前端开发
【实测】大白话讲requests发送请求的不同参数类型(下)
【实测】大白话讲requests发送请求的不同参数类型(下)
输出十进制“08”等其他数值,报错无效的八进制数字,换个角度,三种方法解决问题
很显然,我们自己的语言与计算机有差别,我们想法是08,09,就是十进制数前加一个零,这是一个我们自定的格式,但计算机听不懂人类语言,就默认把0+某个数看成了八进制我们知道,八进制不可能出现8以上的数字,所以写程序时就有了下面这种报错:那我们赋值、输入时,无法表达出“我们认为”的这种所谓的十进制格式时,就应该换个角度去实现。.........
输出十进制“08”等其他数值,报错无效的八进制数字,换个角度,三种方法解决问题
在请求中传入不定长参数实现不同的逻辑处理的解决办法
在请求中传入不定长参数实现不同的逻辑处理的解决办法
|
小程序
小程序 onLaunch 参数差别
小程序 onLaunch 参数差别
435 0
小程序 onLaunch 参数差别
为什么APF框架初始化时有两个一模一样的analyticConfiguration请求
为什么APF框架初始化时有两个一模一样的analyticConfiguration请求
为什么APF框架初始化时有两个一模一样的analyticConfiguration请求
|
SQL BI 关系型数据库
参数为空取全部数据的几种做法
当通过多个参数对数据进行过滤并且不选择某个参数时,希望依然能够查询出其他带条件的数据,也就是参数为空时忽略掉该条件,点击 <a href="http://c.raqsoft.com.cn/article/1543386793666?r=IBelieve" target="_blank" rel="n...
977 0
|
C++
vs调试的时候,指定的参数已超出有效值的范围。参数名:sit ,先仔细看看错误和我的一样不一样
https://www.cnblogs.com/pei123/p/7694947.html 指定的参数已超出有效值的范围。参数名:sit ,先仔细看看错误和我的一样不一样 更新了1709就这样了,的确修复了就可以了 控制面板>程序> 网名:浩秦; 邮箱:root#landv.pw; 只要我能控制一個國家的貨幣發行,我不在乎誰制定法律。
1076 0