Silverlight中動(dòng)態(tài)獲取Web Service地址
第一,在開(kāi)發(fā)的階段一旦改變了WS文件的目錄結(jié)構(gòu)就必須改變SL工程中的WS地址,而且這種改變并不是單純的Update Service Reference這么簡(jiǎn)單,因?yàn)榈刂芬呀?jīng)改變了,你必須刪掉舊的Reference來(lái)添加新的Reference,這是其一。
第二, 當(dāng)項(xiàng)目開(kāi)發(fā)完成要部署上去服務(wù)器時(shí)大問(wèn)題就來(lái)了。如果在開(kāi)發(fā)的時(shí)候是用VS的Add Service Reference來(lái)添加引用的話,系統(tǒng)會(huì)自動(dòng)生成一個(gè)ServiceReferences.ClientConfig的配置文件,里面記錄著WS的地址和緩存、連接時(shí)長(zhǎng)之類的信息,要命的是這個(gè)配置文件是連同SL工程一并打包進(jìn)xap文件里面的,也就是說(shuō)一旦項(xiàng)目部署到了服務(wù)器上之后就不能再改WS的地址了。這對(duì)項(xiàng)目的遷移,服務(wù)器IP地址的變動(dòng)都帶來(lái)十分不利的影響。
這里介紹一種動(dòng)態(tài)獲取WS地址的方法,這種方法不依賴于 ServiceReferences.ClientConfig文件。雖然說(shuō)不依賴于配置文件,但是開(kāi)發(fā)者仍然需要使用VS的Add Service Reference來(lái)添加一次引用,用于生成SL端的操作代碼。好了,進(jìn)入正題,下面是用于生成WSClient的類
public class ServiceUtil
{
public static string SVCPath { set; get; }
/// <summary>
/// Get Data Service path
/// </summary>
/// <returns>path</returns>
public static WorkflowServiceClient GetDynamicClient()
{
if (SVCPath == null)
throw new Exception("Wrong SVC Path!");
BasicHttpBinding binding = new BasicHttpBinding(Application.Current.Host.Source.Scheme.Equals("https", StringComparison.InvariantCultureIgnoreCase) ? BasicHttpSecurityMode.Transport : BasicHttpSecurityMode.None);
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxBufferSize = int.MaxValue;
return new WorkflowServiceClient(binding, new EndpointAddress(new Uri(Application.Current.Host.Source, SVCPath)));
}
}
上面ServiceUtil類中有一個(gè)靜態(tài)的字符串變量,用來(lái)保存WS文件路徑;然后下面的GetDynamicClient方法就是把SL應(yīng)用的宿主網(wǎng)站uri與WS文件路徑組合起來(lái)形成完整的WS引用URL。這里這個(gè)靜態(tài)變量SVCPath通常是在使用WS操作前賦值,而具體的值可以通過(guò)網(wǎng)站W(wǎng)eb.config文件的appsetting中字段中傳過(guò)來(lái),至于怎么在SL工程中獲取aspx頁(yè)面的參數(shù)的問(wèn)題,我在上一篇隨筆中有寫(xiě)到,大家可以參考一下。
相關(guān)文章
asp.net 身份驗(yàn)證機(jī)制實(shí)例代碼
對(duì)于ASP.NET驗(yàn)證機(jī)制在項(xiàng)目開(kāi)發(fā)中運(yùn)用,會(huì)使項(xiàng)目非常方便快捷的實(shí)現(xiàn)頁(yè)面的訪問(wèn)權(quán)限問(wèn)題,而且省去了一些沒(méi)必要的安全問(wèn)題2012-06-06
asp.net使用Socket.Send發(fā)送信息及Socket.SendFile傳輸文件的方法
這篇文章主要介紹了asp.net使用Socket.Send發(fā)送信息及Socket.SendFile傳輸文件的方法,結(jié)合實(shí)例形式分析了asp.net基于socket實(shí)現(xiàn)信息與文件傳輸?shù)南嚓P(guān)技巧,需要的朋友可以參考下2016-06-06
asp.net中ListBox 綁定多個(gè)選項(xiàng)為選中及刪除實(shí)現(xiàn)方法
文章介紹了關(guān)于在asp.net中的listbox的綁定多個(gè)選項(xiàng)和同時(shí)選中多個(gè)選項(xiàng)以及刪除多個(gè)選項(xiàng)的方法2012-04-04
asp.net中調(diào)用存儲(chǔ)過(guò)程的方法
這篇文章主要介紹了asp.net中調(diào)用存儲(chǔ)過(guò)程的方法,結(jié)合實(shí)例形式分析了存儲(chǔ)過(guò)程的建立與asp.net調(diào)用存儲(chǔ)過(guò)程的相關(guān)技巧,需要的朋友可以參考下2016-05-05
asp.net Urlrewriter在虛擬主機(jī)上的使用方法
在網(wǎng)上看到,很多朋友在asp.net中做urlrewrite,用的是HttpHandle Server.Transfer的方法。其實(shí)這種方法是錯(cuò)誤的。2009-12-12
VB.NET驗(yàn)證郵件地址的合法性實(shí)現(xiàn)代碼
現(xiàn)在,對(duì)于用戶在Web頁(yè)面上或電話中給出的Email地址,我們?cè)絹?lái)越不敢肯定它是否真的有效。在今天這個(gè)垃圾郵件泛濫成災(zāi)的年代,人們完全有理由舍不得輕易透露Email地址。2011-04-04
ASP.NET簡(jiǎn)化編輯界面解決思路及實(shí)現(xiàn)代碼
簡(jiǎn)化用戶操作界面,添加功能一般沒(méi)法簡(jiǎn)化,但是如果是在GridView做顯示,編輯,更新與刪除,會(huì)讓用戶在編輯,需要點(diǎn)擊編輯銨鈕,再進(jìn)行編輯,或是取消編輯,下面是改進(jìn)的方法做了演示動(dòng)畫(huà),感興趣的朋友可以了解下2013-01-01
asp.net+ajaxfileupload.js 實(shí)現(xiàn)文件異步上傳代碼分享
本文給大家分享一段asp.net基于ajaxfileupload.js實(shí)現(xiàn)文件異步上傳的代碼,本人項(xiàng)目中已經(jīng)在使用的代碼,小伙伴們可以直接移植到自己的項(xiàng)目中去。2014-11-11

