【问题标题】:How to dynamically set the server name of wcf service in silverlightSilverlight中如何动态设置wcf服务的服务器名
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢 Fresky,我们在这里面临的挑战是这个应用程序需要部署到多个站点。我们不想在安装时手动编辑每个 xap 文件,而是希望在配置文件中使用更多内容,在安装时可以配置服务器名称,而不是在安装后手动触摸每个 xap 文件。
      猜你喜欢
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多