InlineScript屬性表示是否將代理緩存到頁面中(Html源碼中)。在JS代碼調用WebService時,如果WebService有命名空間,必須加上命名空間調用,並且WebService裡面方法是作為靜態方法調用,也就是說,不用實例化WebService。在客戶端調用WebService的方法的時候,ScriptManager代理的方法後默認追加幾個參數個參數,
注意,即使沒有返回值也會調用回調函數。
2、客戶端訪問頁面的方法。頁面的方法必須寫在aspx頁面文件對應的ASPx.cs文件上。方法必須是public和static並且用[WebMethod]標記。客戶端必須使用PageMethods.方法名()訪問,並且與訪問WebService一樣有成功後的回調函數。注:ScriptManager的EnablePageMethods屬性必須設置為true,才能訪問頁面的方法。一般很少使用客戶端訪問頁面的方法。
3、調用PageMethod和WebService的錯誤處理。如第一點所描述的失敗回調函數的參數為一個error對象,那麼錯誤對象有一下幾種方法,來返回錯誤的一些信息WebService方法:
[WebMethod]
public Employee DoubleSalary(Employee employee)
...{
employee.Salary *= 2;
return employee;
}
Employee類:
那麼客戶端的employee對象,因為與Employee的公開字段相同名字的FIEld,並且WebMethod的方法是Employee類,那麼,調用WebMethod的方法的時候employee對象由客戶端的Object類型轉換為了Employee類型。那麼返回值也與此類似,只不過轉換方向反過來了。
容器對象:在WebService一方要返回一個集合或參數是一個集合,那麼這個方法的返回值或參數必須實現了IList接口或IDictionary接口的對象。並且IDictionary對象的key必須是string類型,那麼客戶端的對象一定是Array類型。這樣就能實現由客戶端的Array類型到服務段的IList或IDictionary類型的互轉
注:Array類型可以象IList接口是一個一維數組,也可以是類似與IDictionary是一個帶有key的二位數組
生成的WebService代理存在一個set_timeout()方法,用來設置調用WebService的超時時間。PageMethod不存在這個方法。
4、負責類型的使用
公有屬性或公有Field會被釋放和接受。這句話的意思就是如果通過客戶端傳遞過來的對象,這個對象的屬性與WebService裡方法參數所對應的類的公有屬性或公有FIEld字段名相同,將自動轉換為相應的對象。如以下代碼
客戶端:
onSucceeded:執行成功調用的回調函數地址
onSucceeded的三個參數:result函數的返回值,userContext是有調用WebMethod的userContext,可以將一些附加信息傳遞到onSucceeded函數,methodName調用成功回調函數的的WebMethod的函數名。
onFailed:執行失敗/超時的回調函數地址
onFailed的三個參數:result是error對象,後面兩個參數與onSucceeded的兩個參數相同。
userContext:由用戶指定要傳給回調函數的附加信息
WebService方法生成的代理方法最後三個參數可以通過以下幾個方法