2010-10-17 101 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