0

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

感谢您的任何建议。

4

2 回答 2

0

经过更多研究后,它出现在将 sl 应用程序安装在单独的服务器上的情况下,或者如果需要让它指向不同的 WCF 端点,则上述方法最适合该项目。我们最终将端点的完整服务器名称与其他连接字符串一起存储在 web.config 文件中。然后使用 JSON 将此值传递给 init 参数。Silverlight 然后能够在初始化时获取新的服务器名称并将 SL 应用程序指向新服务。

于 2010-08-12T13:55:36.827 回答
0

我所做的是用 zip 打开 xap 文件,然后手动更新端点 servicereference.clientconfig 文件,然后再压缩回去。

于 2010-08-15T02:55:02.213 回答