0

无论如何配置clickonce,以便提示用户填写应用程序的连接字符串?

就像,我将为许多用户部署我的应用程序,并且在每种情况下,sql server 都会获得一个实例名称,可能不同,并且主机肯定会不同。那么如何配置它以继续安装正确的连接字符串?

4

1 回答 1

0

这里有两种方法 - 在您启动应用程序时检查应用程序设置中是否存在连接字符串;如果它没有要求用户给你一个(确保将应用程序设置存储在隔离存储中)。

如果您想要它自动,并且您在 Web 服务器上托管您的应用程序,您可以将连接字符串作为激活 url 的一部分传递(而不是 /ClickOnce.application 直接用户到页面 /ClickOnce.application?ConnectionString=My_Encoded_ConnectionString)并从应用程序本身你可以这样阅读

  try {
    if (ApplicationDeployment.CurrentDeployment == null ||
      ApplicationDeployment.CurrentDeployment.ActivationUri == null)
      return null;
  } catch {
    // application was not activated from the web
    return null;
  }

  Uri uri = ApplicationDeployment.CurrentDeployment.ActivationUri;
  string query = uri.Query;
  if (string.IsNullOrEmpty(uri.Query))
    throw new UIException("Activation Uri is empty.");

  Regex regex;
  Match match;
  regex = new Regex(@".*ConnectionString=(?<ConnectionString>([A-Z0-9\+/=:%\._-]+))", RegexOptions.IgnoreCase);
  match = regex.Match(uri.Query);
  if (match == null || !match.Success) {
    throw new UIException("ConnectionString not recognized as part of activation Uri.");
  }
  return HttpUtility.UrlDecode(match.Groups["ConnectionString"].Value);
于 2013-06-04T12:34:29.000 回答