【发布时间】:2010-08-04 20:40:23
【问题描述】:
我需要部署一个 silverlight 4 解决方案,它使用来自 WCF 服务的数据。挑战在于这将是一个生产安装,因此我无法控制服务的服务器名称,并且银灯应用程序不会与 WCF 安装在同一台服务器上。
到目前为止,我已经想到了从这里开始的这条路:
我必须通过 initParams 将 WCF 的服务器名称传递给我的 silverligth 应用程序。
在我拥有的 aspx 文件中
<param name="initparams" value="servicepoint=http://myservice" />
然后在 app.xaml.cs 中 我调用参数:
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage(e.InitParams); //pass parameter from html direclty to main page
}
我在应用启动时调用了它,因此参数将在整个应用的范围内。
现在在主页中,我将此参数分配给一个变量
dswconnection = initParams["servicepoint"];
然后每当我查询服务时,我都会设置地址以覆盖服务 referencenece.config 文件中的默认值
QueryClient selAct = new QueryClient("BasicHttpBinding_IQuery");
selAct.Endpoint.Address = new System.ServiceModel.EndpointAddress(dswconnection);
我的问题是....这是最好的方法,还是在您不知道服务器名称可能是什么时动态识别服务的服务器名称的另一种方法。这是我无法使用某些功能来检测 channelfactory 中的主机名或地址的关键点,因为 silverlight 应用程序将驻留在与 WCF 不同的主机上。
现在,传递给 initparams 的值存储在 javascript 读取的配置文件中,然后分配为值。在我的代码中,为了简洁起见,我对其进行了硬编码。
感谢您的任何建议。
【问题讨论】:
标签: silverlight channelfactory