客戶端訪問WebService中如何【改變客戶端訪問時的方法名】

改變客戶端訪問時的方法名

• 客戶端無法重載方法(overload)
   –可以通過判斷arguments數量來模擬重載
• 如果服務器端出現了方法重載?
 –使用WebServiceAttribute指定客戶端方法名
 –使用和真正的WebService相同的做法
 – [WebMethod(MessageName = “…")]
• 並非出現重載時才能改變方法名稱

------------------------------------------------------------------------------------

實例

aspx頁面

<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug">
			<Services>
				<asp:ServiceReference Path="Services/MethodOverloadedService.asmx" InlineScript="true" />
			</Services>
		</asp:ScriptManager>
		
		<input type="button" value="Get Random" οnclick="getRandom()" />
		<input type="button" value="Get Range Random" οnclick="getRandom(50, 100)" />
		
		<script language="javascript" type="text/javascript">
			function getRandom(minValue, maxValue)
			{
				if (arguments.length != 2)
				{
					MethodOverloadedService.GetRandom(onSucceeded);
				}
				else
				{
					MethodOverloadedService.GetRangeRandom(minValue, maxValue, onSucceeded);//此處調用的爲自定義法方名
				}
			}
			
			function onSucceeded(result)
			{
				alert(result);
			}
		</script>


MethodOverloadedService.asmx頁面

<%@ WebService Language="C#" Class="MethodOverloadedService" %>

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class MethodOverloadedService  : WebService
{
	[WebMethod]
	public int GetRandom()
	{
		return new Random(DateTime.Now.Millisecond).Next();
	}

	[WebMethod(MessageName="GetRangeRandom")]//此處設置可在客戶端調用的新方法名稱
	public int GetRandom(int minValue, int maxValue)
	{
		return new Random(DateTime.Now.Millisecond).Next(minValue, maxValue);
	}
    
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章