使用 = 符号解析 ConnectionString
Parse ConnectionString with = symbol
我正在尝试解析连接字符串并提取要在代码中使用的值。问题是我的连接字符串中的一个值有一个 =
符号。
这是我的代码
private void Parse(string connectionString)
{
var components = connectionString.Split(';');
foreach (var component in components)
{
if (string.IsNullOrEmpty(component)) continue;
var fieldValuePair = component.Trim().Split('=');//Problematic? Don't know how to fix!
var field = fieldValuePair[0].ToLower();
var value = fieldValuePair[1];
switch (field)
{
case "url":
_serverUrl = value;
break;
case "authcode":
_authcode = value;
break;
default: throw new InvalidOperationException($"{field} Value is unknown in connection settings");
}
}
}
问题是这段代码在所有情况下都有效,除非 authcode 中有一个 =。
因此,此连接字符串未提供正确的详细信息。
<add name="ServerAuthCodeString" connectionString="url=https://devunifiedinterface.appstore.com; authCode=mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=" />
我得到的输出是
_authcode = mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu //Missing = at the end
我需要的是
_authcode = mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=
是的,有一个 question 讨论连接字符串。
但是,答案似乎仍未解决带有 =
符号的问题。
比如这个comment专门讲的。
SqlConnectionStringBuilder
对我不起作用。如果我传入我的 connectionString,它会抱怨关键字 url 无效。
您需要从 Split
函数中指定 return 拆分的字符串数量,在您的情况下是 2
.
var fieldValuePair = component.Trim().Split(new char[] { '=' }, 2);
所以这会给你,
- 索引
0
处的第一个拆分字符串:_authcode
- 索引
1
处的第二个拆分字符串:mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=
(包括 =
)
我正在尝试解析连接字符串并提取要在代码中使用的值。问题是我的连接字符串中的一个值有一个 =
符号。
这是我的代码
private void Parse(string connectionString)
{
var components = connectionString.Split(';');
foreach (var component in components)
{
if (string.IsNullOrEmpty(component)) continue;
var fieldValuePair = component.Trim().Split('=');//Problematic? Don't know how to fix!
var field = fieldValuePair[0].ToLower();
var value = fieldValuePair[1];
switch (field)
{
case "url":
_serverUrl = value;
break;
case "authcode":
_authcode = value;
break;
default: throw new InvalidOperationException($"{field} Value is unknown in connection settings");
}
}
}
问题是这段代码在所有情况下都有效,除非 authcode 中有一个 =。
因此,此连接字符串未提供正确的详细信息。
<add name="ServerAuthCodeString" connectionString="url=https://devunifiedinterface.appstore.com; authCode=mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=" />
我得到的输出是
_authcode = mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu //Missing = at the end
我需要的是
_authcode = mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=
是的,有一个 question 讨论连接字符串。
但是,答案似乎仍未解决带有 =
符号的问题。
比如这个comment专门讲的。
SqlConnectionStringBuilder
对我不起作用。如果我传入我的 connectionString,它会抱怨关键字 url 无效。
您需要从 Split
函数中指定 return 拆分的字符串数量,在您的情况下是 2
.
var fieldValuePair = component.Trim().Split(new char[] { '=' }, 2);
所以这会给你,
- 索引
0
处的第一个拆分字符串:_authcode
- 索引
1
处的第二个拆分字符串:mQLw/OWghN0s4jQhBso7o68/KGsLnzwlWux2cnv5QYu=
(包括=
)