如何修复错误::初始化字符串的格式不符合从索引0开始的规范::

问题描述 投票:14回答:16

我在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);...

asp.net connection-string
16个回答
17
投票

查看实际的连接字符串可能会有所帮助。添加到Global.asax:

throw new Exception(ConfigurationManager.ConnectionStrings["mcn"].ConnectionString);

如果实际连接字符串是$(ReplacableToken_mcn-Web.config Connection String_0),那将解释问题。


0
投票

我得到了这个异常,通过将throwIfV1Schema: false添加到我的DbContext构造函数来修复它:

public class AppDb : IdentityDbContext<User>
{
    public AppDb()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }
}

0
投票

对于任何可能在尝试通过运行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文件已存在。


0
投票

我在这个错误上浪费了1.5个工作日,最后一位同事通过Uw替换了用户ID并通过Pwd替换了密码。 .Net的更新连接字符串对我来说是错误的


0
投票

此主题中列出的所有解决方案都不适用于我。在对web.config文件的连接字符串部分进行了一些更改后,我开始收到此错误。 (我的应用程序连接到多个数据库。)我仔细检查了我所做的更改,我已经删除了列表顶部的标记。我恢复了连接字符串列表顶部的标记,问题立即消失了。获取错误的此站点是位于主站点(https://www.domain.org/MySite)下方的应用程序。这可能无法解决所有人的问题,但它确实解决了我的问题。


0
投票

一个不需要的单引号是我的问题。从错误字符串中提到的索引位置检查连接字符串有助于我发现问题。


0
投票

如果您使用的是EF和发布配置文件,则您的发布配置文件中可能会有一个空白的连接字符串条目。烦人但完全有可能。


0
投票

我使用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文件。


0
投票

当你意识到你做了什么时,我的解决方案非常简单,另外一个很明显。我是以下列方式使用.NET Core / Standard手动构建配置:

var configurationBuilder = new ConfigurationBuilder();
var root = configurationBuilder.Build(); 

并且忘记了包含我的配置设置的appsettings.json文件

configurationBuilder.AddJsonFile("appsettings.json", false);

一旦添加,所有都开始工作了。


5
投票

我遇到了同样的问题,发现我的连接字符串在连接字符串的中间有一个额外的双引号字符。


3
投票

我最初调用连接字符串值,如下所示(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

2
投票

我在VS2015中有这个,我的修复是改变我的WebConfig中的第一行

<?xml version="1.0" encoding="utf-8"?>

<?xml version="1.0"?>

好奇。


2
投票

访问已发布的ASP.NET Web Api时,我遇到了同样的问题。就我而言,我意识到当我即将发布Web Api时,我没有在数据库部分中指出连接字符串:

After using the three dot button, the connection string will be displayed on the text field to the left

所以我使用三点按钮生成它,并在发布后,它工作。

有点奇怪的是,很长一段时间我很确定该配置中没有连接字符串,但它仍然有用。


1
投票

另一个缺陷是connectionString有时会引用app / web-config中连接字符串的名称,有时会引用实际的连接字符串本身,反之亦然。

很容易修复,但有时很难发现。


1
投票

对于我的情况,罪魁祸首是prod DB密码中的分号和双引号。我们的IT团队使用一些工具来生成密码,因此它生成一个带分号和双引号Connectionstring的样子

<add key="BusDatabaseConnectionString" value="Data Source=myserver;Initial Catalog=testdb;User Id=Listener;Password=BlaBla"';[]qrk/>

密码已更改且工作正常。


0
投票

我的问题是我的web.config文件保留了对已删除实体模型连接的引用,因此检查是否有任何过时的连接字符串。


0
投票

尝试启动应用程序时出现以下错误:

初始化字符串的格式不符合从索引57开始的规范。

在我的研究过程中,我找到了这个堆栈,我能够通过查看web配置文件来修复此错误,并发现passowrd中有一个额外的字符串。一旦我删除了字符串,我就可以访问该网站而没有任何错误。

© www.soinside.com 2019 - 2024. All rights reserved.