无论如何配置clickonce,以便提示用户填写应用程序的连接字符串?
就像,我将为许多用户部署我的应用程序,并且在每种情况下,sql server 都会获得一个实例名称,可能不同,并且主机肯定会不同。那么如何配置它以继续安装正确的连接字符串?
无论如何配置clickonce,以便提示用户填写应用程序的连接字符串?
就像,我将为许多用户部署我的应用程序,并且在每种情况下,sql server 都会获得一个实例名称,可能不同,并且主机肯定会不同。那么如何配置它以继续安装正确的连接字符串?
这里有两种方法 - 在您启动应用程序时检查应用程序设置中是否存在连接字符串;如果它没有要求用户给你一个(确保将应用程序设置存储在隔离存储中)。
如果您想要它自动,并且您在 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);