WebService中更新函数传入值,再调用其中函数时,函数的参数还是未改变

背景:

今天写了一个webservice,又修改了一下函数的返回类型、out参数的数量(改为:public void SendData(DataSet ds, out string result,out string errMsg)),之后更新引用,再调用的使用时候发现SendData显示为public
string SendData(DataSet ds, out string errMsg)形式,不管是添加webservice还是reference service都不行,解决方案也清理过,iis也重启过,都没解决问题。

结果:

最后把函数改成public bool SendData(DataSet ds, out string result,out string errMsg)就可以了,再调用的时候,就会正确提示。可见void与多个out有一定的“矛盾”啊

==》微软在web引用的时候做了一个转换,把void类型函数的out参数自动转换为非void函数,并把这个参数变成了函数的返回值。

比如:


  1. [WebMethod]  
  2.     public void getPwdNick(int userid,out string pwd,out string nick)  
  3.     {  
  4.     }  

他会在web引用后生成如下代码:


[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/getPwdNick", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]        

 [return: System.Xml.Serialization.XmlElementAttribute("pwd")]         

public string getPwdNick(int userid,out string nick) 

{             

object[] results = this.Invoke("getPwdNick", new object[] {userid});             

nick = ((string)(results[1]));             

return ((string)(results[0]));                   

 } 

这段代码在vs中点击显示所有文件,然后再web refences下面localhost-Reference.map-Reference.cs中。

例子来源

时间: 2024-11-03 09:41:36

WebService中更新函数传入值,再调用其中函数时,函数的参数还是未改变的相关文章

HttpRuntime.Cache在一般处理程序中设置了值,当下一次请求时,里面又重置,不知道怎么回事

问题描述 HttpRuntime.Cache在一般处理程序中设置了值,当下一次请求时,里面又重置.然后我又再Global里添加静态变量,在一般处理程序中对其进行更改,在下一次请求也重置了....iis没有重启--代码如下:publicclassGlobal:System.Web.HttpApplication{publicstaticintlist=0;}这是一般处理程序中的:Global.list++;HttpRuntime.Cache.Insert(("m"+mid),m,null

link中能绕开事件直接调用它对应的函数么?请问怎么调用?不想调用事件。

问题描述 link中能绕开事件直接调用它对应的函数么?请问怎么调用?不想调用事件. link中能绕开事件直接调用它对应的函数么?请问怎么调用?不想调用事件. 解决方案 http://www.cnblogs.com/icyJ/p/Reflection.html

基于js里调用函数时,函数名带括号和不带括号的区别_javascript技巧

示例代码: <span style="font-size:18px;">function hi(){ var a = 1; return function(){ console.log(a++); }; }; var aaa = hi(); var bbb = hi; </span> 如以上代码: aaa 是将 hi() 的运行结果赋值给它,即 return 返回的匿名函数,此时有一个闭包,则每次调用 aaa 时都访问的同一个 a,aaa() 第一次运行结果为

调用webservice中含返回值为自定义对象的方法时,报ClassCastException错误

问题描述 本人初学webservice,平台用spring+cxf+ibatis,在调用接口中含返回自定义对象的方法时,就会报ClassCastException,即方法:publicList<User>getUserList() 调用返回值为基本类型的方法,则没问题,如:publicIntegergetUserCount(); 困扰很久,包括调用参数中含自定义类型的方法,也会报同样错误,如:publicvoidbImportData(List<User>uList); 请教各位大

javascript 调用js:javascript中iframe里面的页面调用父窗口js函数的方法

实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法.比如有A窗口,A内有个IFRAME. B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数ExpandPage();那么只要在C页面中写如下JS函数就可以了:window.parent.ExpandPage();如果ExpandPage()有参数也可以直接传递合适的参数进去. 本文链接http://www.cxybl.com/html/wyzz/JavaScript_Ajax/20130131/36765.h

javascript中iframe里面的页面调用父窗口js函数的方法

实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法. 比如有A窗口,A内有个IFRAME. B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数ExpandPage(); 那么只要在C页面中写如下JS函数就可以了: window.parent.ExpandPage(); 如果ExpandPage()有参数也可以直接传递合适的参数进去.

spring-项目中ajax返回值的问题

问题描述 项目中ajax返回值的问题 项目类似于微博系统,struts2+springjquery的Ajax提交并返回值是个map对象.现在的问题是: 我发布一条微博时想无刷新的在下面出现一条加入的记录,这个基本就是在前台将返回的值拼字符串,然后插入到记录显示,因为会有大量的这个拼接字符串的地方,我想问下有没有其他的简单的方式来实现无刷新的提交并回显 解决方案 可以 改用创建 对象 .获取到同样样式的最后一个对象.jquery对象.clone()方法克隆该jquery对象再给对象用js更改后台获

database-在sqlite选项参数中使用int值

问题描述 在sqlite选项参数中使用int值 在使用 Integer.toString()时将int值转换成string,在不需要转换时有没有其他方式? 举个例子: int value = 10; Cursor cursor = database.query( "TABLE_X", new String[] { "COLUMN_A", "COLUMN_B" }, "COLUMN_C = ?", new String[] {

Shell中的函数、函数定义、作用域问题介绍_linux shell

说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很"自然"的错误,也让我吃了不少的苦头,所以总结一下Shell中函数的调用方法. 一.Shell中函数的定义 为了方便程序和管理和模块化并减少代码的重复,函数的确是一个好东西.而Shell中函数的定义有两种方法,如下: 复制代码 代码如下: function fname() {     statements: } 或 复制代码 代码如