程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> WebService中更新函數傳入值,再調用其中函數時,函數的參數還是

WebService中更新函數傳入值,再調用其中函數時,函數的參數還是

編輯:關於C#
 

今天寫了一個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中。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved