2010-10-17 96 views
0

我們剛剛爲我們的Silverlight應用程序添加了專用測試服務器。我們正在將所有應用程序和服務的完整副本部署到測試服務器上。我們遇到的問題是,我們需要在部署時手動更新ServiceReference.ClientConfig,以指向相應的服務器(即測試或活動)。Silverlight - 服務配置切換

我確定這是一個常見問題。什麼是「最佳實踐」解決方案?

回答

1

我通常在我的SL web項目中創建一個Configuration文件夾,其中包含我打算將應用程序發佈到的每個位置的ServiceReferences.ClientConfig(ServiceReferences.ClientConfig.dev,ServiceReferences.ClientConfig.test,ServiceReferences.ClientConfig.prod) 。

然後,我創建的每個環境(開發,測試,正式版)的解決方案配置和SL應用程序生成事件設置爲:

xcopy /R /Y $(ProjectDir)Configuration\ServiceReferences.ClientConfig.$(ConfigurationName) $(ProjectDir)ServiceReferences.ClientConfig 

出版之前,我只需要選擇配置,構建和發佈

1

我會以編程方式在Silverlight應用程序中更改端點的主機名,具體取決於從主機頁面傳遞給SL應用程序的特定參數(當然,這意味着當您部署在應用程序上時,您將不得不在不同的頁面上託管應用程序測試服務器 - 或者您可以將「主動」作爲部署腳本的一部分編輯主機頁面)。

對於測試頁上例::

<param name="initParams" value="testServer=myhost.com"/> 

然後在你讀TESTSERVER參數Silverlight應用程序(您收到Application_Startup事件中的哈希表initParams在)和編程設置主機名你收到什麼。您需要某種遠程代理的集中式工廠,否則您將不得不在幾個不同的地方替換主機名。另外,我只會這樣做#if DEBUG(或者甚至更好地定義另一個編譯常量,在實際部署之前將被刪除),所以不存在任何用於任何惡意目標的風險。

+1

我做了類似的事情,但是我發現如果您將應用程序託管在ASP.NET頁面中並從主機的web.config文件動態地寫入initParams,我發現我更喜歡這個結果。它允許您通過在主機頁面上安裝不同的配置文件來輕鬆地安裝在不同的位置。 – Stephan 2010-10-18 16:46:39