我在godaddy共享主机上传了我的网站。我可以从我的管理工作室访问这个数据库。我无法从我的网站访问此数据库。我收到以下错误:
初始化字符串的格式不符合从索引0开始的规范。
我的连接字符串在web.config中,它看起来像这样:
<connectionStrings>
<add name="mcn" connectionString="Data Source=mydatabase.db.8706856.hostedresource.com; Initial Catalog=mydatabase; User ID=username; Password=xyz;" providerName="System.Data.SqlClient" />
</connectionStrings>
是什么导致这个错误?我也试过写...Data Source=(local);...
查看实际的连接字符串可能会有所帮助。添加到Global.asax:
throw new Exception(ConfigurationManager.ConnectionStrings["mcn"].ConnectionString);
如果实际连接字符串是$(ReplacableToken_mcn-Web.config Connection String_0)
,那将解释问题。
我得到了这个异常,通过将throwIfV1Schema: false
添加到我的DbContext构造函数来修复它:
public class AppDb : IdentityDbContext<User>
{
public AppDb()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
}
对于任何可能在尝试通过运行Enable-Migrations
修复同样的错误时偶然遇到此线程的人,很可能上述解决方案都无法帮助您(我尝试了所有这些)。
在PM控制台中运行此问题后,我在Web API 2中遇到了同样的问题:
Enable-Migrations -EnableAutomaticMigrations -ConnectionString IdentityConnection -ConnectionProviderName System.Data.SqlClient -Force
我修改它来实际使用ApplicationDbContext
中创建的IdentityModels
。
Enable-Migrations -ContextTypeName ApplicationDbContext -EnableAutomaticMigrations -Force
有趣的是,它不仅引用了相同的连接字符串,而且构造函数包含4castle所说的可能修复的代码(即throwIfV1Schema: false
建议)。
请注意,仅使用-Force
参数,因为Configuration.cs
文件已存在。
我在这个错误上浪费了1.5个工作日,最后一位同事通过Uw替换了用户ID并通过Pwd替换了密码。 .Net的更新连接字符串对我来说是错误的
此主题中列出的所有解决方案都不适用于我。在对web.config文件的连接字符串部分进行了一些更改后,我开始收到此错误。 (我的应用程序连接到多个数据库。)我仔细检查了我所做的更改,我已经删除了列表顶部的标记。我恢复了连接字符串列表顶部的标记,问题立即消失了。获取错误的此站点是位于主站点(https://www.domain.org/MySite)下方的应用程序。这可能无法解决所有人的问题,但它确实解决了我的问题。
一个不需要的单引号是我的问题。从错误字符串中提到的索引位置检查连接字符串有助于我发现问题。
如果您使用的是EF和发布配置文件,则您的发布配置文件中可能会有一个空白的连接字符串条目。烦人但完全有可能。
我使用Visual Studio在localhost开发中遇到了相同的错误消息。请注意,使用Microsoft Release Management(MRM)发布时,一切正常。我通过更改作为MRM参考的初始值来修复我的情况。
我的App.config初始值如下:
<connectionStrings>
<add name="BDORA" connectionString="__token3__" />
</connectionStrings>
在本地,应用程序执行无法将令牌3引用解释为其在Tokens.xml中的实际值。为了使它在我的localhost上运行,我不得不将Tokens.xml中token3的值强制转换为App.config文件。
当你意识到你做了什么时,我的解决方案非常简单,另外一个很明显。我是以下列方式使用.NET Core / Standard手动构建配置:
var configurationBuilder = new ConfigurationBuilder();
var root = configurationBuilder.Build();
并且忘记了包含我的配置设置的appsettings.json文件
configurationBuilder.AddJsonFile("appsettings.json", false);
一旦添加,所有都开始工作了。
我遇到了同样的问题,发现我的连接字符串在连接字符串的中间有一个额外的双引号字符。
我最初调用连接字符串值,如下所示(VB.NET),并提到了错误
Using connection As New SqlConnection("connectionStringName")
'// more code would go here...
End Using
添加对System.Configuration的引用并更新我的代码如下所示是我的解决方案。连接字符串不是问题,因为其他控件使用它没有任何问题(SqlDataSource)
Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString)
'// more code would go here...
End Using
我在VS2015中有这个,我的修复是改变我的WebConfig中的第一行
<?xml version="1.0" encoding="utf-8"?>
至
<?xml version="1.0"?>
好奇。
另一个缺陷是connectionString
有时会引用app / web-config中连接字符串的名称,有时会引用实际的连接字符串本身,反之亦然。
很容易修复,但有时很难发现。
对于我的情况,罪魁祸首是prod DB密码中的分号和双引号。我们的IT团队使用一些工具来生成密码,因此它生成一个带分号和双引号Connectionstring的样子
<add key="BusDatabaseConnectionString" value="Data Source=myserver;Initial Catalog=testdb;User Id=Listener;Password=BlaBla"';[]qrk/>
密码已更改且工作正常。
我的问题是我的web.config文件保留了对已删除实体模型连接的引用,因此检查是否有任何过时的连接字符串。
尝试启动应用程序时出现以下错误:
初始化字符串的格式不符合从索引57开始的规范。
在我的研究过程中,我找到了这个堆栈,我能够通过查看web配置文件来修复此错误,并发现passowrd中有一个额外的字符串。一旦我删除了字符串,我就可以访问该网站而没有任何错误。