第一次尝试失败,第二次尝试成功:初始化字符串的格式不符合从索引 0 开始的规范
Fails first attempt, succeeds second attempt :Format of the initialization string does not conform to specification starting at index 0
这是一个奇怪的案例。我正在我的数据库上下文构造函数中设置连接。
Database.Connection.ConnectionString = "server=myserver,55555;Initial Catalog=mycatalog;User id=myuser;Password=myuserspassword;"
Format of the initialization string does not conform to specification starting at index 0.
失败
奇怪的是,如果我将代码更改为 运行 相同的命令第二次,它会在第二次尝试时成功。
var constr = "server=myserver,55555;Initial Catalog=mycatalog;User id=myuser;Password=myuserspassword;";
try
{
Database.Connection.ConnectionString = constr;
}
catch
{
Database.Connection.ConnectionString = constr;
}
看来字符串没问题吧?我通过搞砸字符串来验证这一点,然后它在所有尝试中始终抛出格式错误。所以似乎只有在我第一次尝试设置字符串时才会引发错误。
更新:当我在设置连接字符串之前将鼠标悬停在 Database.Connection 上时,错误已经存在并且我无法检查连接 属性。如果我将鼠标移开然后将鼠标移回它上面,那么错误就会消失,并且它会在第一次尝试时使用我的字符串。所以似乎在我什至获得数据库上下文的构造函数之前就已经引起了错误。没有真正回答问题,但它是一个线索。
那会是什么?
解决了问题。我的连接字符串以加密格式存储,我将它们从 appSettings 移动到我的 webconfig 的 connectionStrings 区域。由于这一举动,EF 甚至在到达数据库上下文的构造函数之前就找到了加密的字符串并建立了连接。然后它会在您第一次尝试访问连接 属性 时抛出错误。
解决方案是将连接字符串移回应用程序设置,以免 EF 无法自动找到它们。
这是一个奇怪的案例。我正在我的数据库上下文构造函数中设置连接。
Database.Connection.ConnectionString = "server=myserver,55555;Initial Catalog=mycatalog;User id=myuser;Password=myuserspassword;"
Format of the initialization string does not conform to specification starting at index 0.
奇怪的是,如果我将代码更改为 运行 相同的命令第二次,它会在第二次尝试时成功。
var constr = "server=myserver,55555;Initial Catalog=mycatalog;User id=myuser;Password=myuserspassword;";
try
{
Database.Connection.ConnectionString = constr;
}
catch
{
Database.Connection.ConnectionString = constr;
}
看来字符串没问题吧?我通过搞砸字符串来验证这一点,然后它在所有尝试中始终抛出格式错误。所以似乎只有在我第一次尝试设置字符串时才会引发错误。
更新:当我在设置连接字符串之前将鼠标悬停在 Database.Connection 上时,错误已经存在并且我无法检查连接 属性。如果我将鼠标移开然后将鼠标移回它上面,那么错误就会消失,并且它会在第一次尝试时使用我的字符串。所以似乎在我什至获得数据库上下文的构造函数之前就已经引起了错误。没有真正回答问题,但它是一个线索。
那会是什么?
解决了问题。我的连接字符串以加密格式存储,我将它们从 appSettings 移动到我的 webconfig 的 connectionStrings 区域。由于这一举动,EF 甚至在到达数据库上下文的构造函数之前就找到了加密的字符串并建立了连接。然后它会在您第一次尝试访问连接 属性 时抛出错误。
解决方案是将连接字符串移回应用程序设置,以免 EF 无法自动找到它们。