Silverlight Application是客户端程序,没有也无法访问服务端的web.config,它自己也不允许添加.config文件,那如何方便地更改配置而不用重新发布呢?找了许多地方,基本上总结出来一个办法。
一般情况下,SL App是由一个Web Application来host的,而那个Web Application是可以方便地配置的,于是,我们可以考虑由网站来把配置传给Silverlight。
具体方法,SL对象在网页中是用一个object来定义的,如:
可以看到其中有一个param标签的name为InitParams,其值可以在App.xaml.cs中的Application_Startup事件处理方法中,使用传入StartupEventArgs参数的InitParams属性取得,类型为IDictionary<string,string>。如上面的例子里,我就可以用e.InitParams["serviceAddress"]取得我设置的服务地址http://localhost:8028/GeneralService.svc。
由于这段代码是包含在ASPX页面或HTML页面中的,所以你可以用ASP.NET来读取web.config的节点值为InitParams赋值。