我需要部署一个 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 读取的配置文件中,然后将其分配为值。在我的代码中,为了简洁起见,我对其进行了硬编码。
感谢您的任何建议。