在[Silverlight][ASP.Net][C#]讓Silverlight也能讀取web.config的小撇步一文中跟大家介紹過了怎麼透過ASP.Net存取Web.config的內容,並且讓Silverlight也能存取得到裡面的值,不過最近有人跟我說這個方式行不通,一問之下,才發現原來他的環境不是純的Silverlight,而是透過OOB模式執行,那一定行不通的啊~~所以這次就來教個偷吃步,讓OOB的應用程式也能把Web.config中的內容存起來,以供後續使用的方式。
在[Silverlight][ASP.Net][C#]讓Silverlight也能讀取web.config的小撇步一文中跟大家介紹過了怎麼透過ASP.Net存取Web.config的內容,並且讓Silverlight也能存取得到裡面的值,不過最近有人跟我說這個方式行不通,一問之下,才發現原來他的環境不是純的Silverlight,而是透過OOB模式執行,那一定行不通的啊~~所以這次就來教個偷吃步,讓OOB的應用程式也能把Web.config中的內容存起來,以供後續使用的方式。
這次的示範要使用到之前的專案,所以請有興趣的同學先行下載(不過為了區隔不同的專案,我在這次的範例中會將專案名稱改名以便區別)。
打開之前的專案之後,首先我們要做的事情是,把專案改成可以使用OOB的方式執行,方法為:在Silverlight的專案名稱上按下滑鼠右鍵 -> 選取Properties -> 勾選Enable running application out of browser,並視需求按下下方的Out-of-Browser Settings…按鈕修改額外的屬性。
做完上述的動作之後,Silverlight應用程式就具備脫離瀏覽器執行的功能了。再來我們必需修改App.xaml.cs檔,加入針對OOB模式的判斷,以決定是否需要將設定值寫入IsolatedStorage中,抑或要從IsolatedStorage中將設定值讀取出來。
在接著往下做之前,需要先引用System.Runtime.Serialization.dll類別庫(因為我們得靠它來處理設定值的序列化工作)。
接著就又是寫程式的時間啦,我們得把App.xaml.cs改為如下:
Ok,搞定了~就這樣,就是這麼簡單!!
如果有Debug的需要的話,接下來有幾點要注意:
1. 要確認起始專案是否設定為ASP.Net的xxxx.Web專案,否則一進Debug模式就會直接進到OOB模式,沒辦法模擬使用者安裝之前的動作,也就沒辦法將設定值寫到IsolatedStorage中。
2. 當使用者安裝了之後,基本上OOB的應用程式就和Web專案脫勾了,所以除非使用者重新以瀏覽器瀏覽Web專案的Silverlight網頁,否則Web.config中的設定值有更新的話,OOB端的IsolatedStorage中的值是不會跟著改變的。
接著來看看執行的結果吧!!
可以在上面Silverlight內容中按下滑鼠右鍵,點選「將SL_ReadConfigFile OOB安裝到此電腦…」,接著執行安裝好的OOB版,瞧~設定值還是讀得到!!
開心的下課吧~最後一樣奉上專案原始檔,請自己取用: