【问题标题】:ClickOnce change WS URL dynamicallyClickOnce 动态更改 WS URL
【发布时间】:2018-01-03 23:19:39
【问题描述】:

我开发 ClickOnce 应用程序 (C# Framework 4.5) 它通过 Web 服务访问数据。 我们有三个环境:dev、test 和 prod。 每个环境 - 另一个服务器名称。 我想使用外部工具发布并复制到每个环境。 问题,要访问每个环境的 Web 服务的正确 URL。 我需要在每个环境的代码中动态更改 url。

我将 WS 引用添加到 app.config

<add key="ws_url_local" value="http://localhost/app/ws.asmx" />
<add key="ws_url_prod" value="http://server_prod/app/ws.asmx" />
<add key="ws_url_test" value="http://server_test/app/ws.asmx" />
<add key="ws_url_dvlp" value="http://server_dvlp/app/ws.asmx" />

我发布到文件夹,然后另一个系统将该文件夹复制到 所有环境。 如何在代码中通过环境动态更改 url?

switch(fromWhereInstaled?){
  case "prod":
    url = ConfigurationManager.AppSettings["ws_url_prod"];
    break;
  case "test":
    ...
}

感谢您的帮助!

【问题讨论】:

    标签: c# url clickonce environment


    【解决方案1】:

    找到解决方案:

    string url = ConfigurationManager.AppSettings["url_ws_local"];
    if(ApplicationDeployment.IsNetworkDeployed)
    {
      ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
      if(ad.ActivationUri.AbsolutePath.Contains("prodservername"))
      {
        url = ConfigurationManager.AppSettings["url_ws_prod"];
      }
      else if ad.ActivationUri.AbsolutePath.Contains("testservername")
      .....
    }
    ws.Url = url;
    

    但如果您在不更新 ActivationUri 的情况下移动应用程序,请使用此解决方案:

    string url = ConfigurationManager.AppSettings["url_ws_local"];
    if(AppDomain.CurrentDomain.SetupInformation.ActivationArgument != null && AppDomain.CurrentDomain.SetupInformation.ActivationArgument.ActivationData != null) // Network published
    {
      string strParam = AppDomain.CurrentDomain.SetupInformation.ActivationArgument.ActivationData[0];
      if(strParam.Contains("prodservername"))
      {
        url = ConfigurationManager.AppSettings["url_ws_prod"];
      }
      else if ...
    }
    ws.Url = url;
    

    但不要忘记转到 Properties=>Publish>Options=>Manifests,然后检查: 允许将 URL 参数传递给应用程序。 同样通过这种方式,您可以更改检查更新的 url。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-14
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 2017-06-23
      • 2017-09-10
      相关资源
      最近更新 更多