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

时间:2011-11-23 13:30:48

标签: c# asp.net sql-server-2008

我有一个ASP.Net应用程序,可以在我的本地开发机器上运行。

当我在线运行此应用程序时,它显示以下错误

  

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

28 个答案:

答案 0 :(得分:146)

检查您的连接字符串。如果您需要帮助,请检查Connection Strings,其中包含常用的列表。

常用的连接字符串:

SQL Server 2012

标准安全

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

受信任的连接

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

与SQL Server实例的连接

服务器选项中使用的服务器/实例名称语法对于所有SQL Server连接字符串都是相同的。

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;

SQL Server 2005

标准安全

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

受信任的连接

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

与SQL Server实例的连接

服务器选项中使用的服务器/实例名称语法对于所有SQL Server连接字符串都是相同的。

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;

的MySQL

<强> 标准

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

指定TCP端口

Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

甲骨文

使用TNS

Data Source=TORCL;User Id=myUsername;Password=myPassword;

使用集成安全性

Data Source=TORCL;Integrated Security=SSPI;

使用不带tnsnames.ora的ODP.NET

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;

答案 1 :(得分:10)

将包含DbContext类的项目设置为启动项目。

我在调用enable-migrations时遇到此错误。 即使在Package Manager Console我选择了正确的Default project,它仍然在查看该启动项目的web.config文件,其中连接字符串不存在。

答案 2 :(得分:9)

这可能对某人有所帮助.. 我的密码包含一个分号,所以面对这个问题。所以在引号中添加了密码。这真是一个愚蠢的错误。

我更改了以下内容:

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password=pass;word" providerName="System.Data.SqlClient" />

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='pass;word'" providerName="System.Data.SqlClient" />

答案 3 :(得分:3)

引用完整的sp路径为我解决了这个问题:

var command = new SqlCommand("DatabaseName.dbo.StoredProcedureName", conn)

答案 4 :(得分:3)

确保您的连接字符串采用以下格式:

  

服务器 = FOOSERVER; database = BLAH_DB; pooling = false;连接超时= 60;集成安全性= SSPI;

如果您的字符串缺少server标记,则该方法将返回此错误。

答案 5 :(得分:2)

我遇到了同样的问题。本地网站运行正常,但在天蓝色的情况下,它会因上面的消息而失败。

结果证明问题是在ctor中设置了连接字符串,如下所示:

    public DatabaseContext() : base("db")
    {
    }

不起作用,这将:

{{1}}

打败我..

答案 6 :(得分:2)

我通过更改ASP.NET Web Api的发布设置上的连接字符串解决了这个问题。

在这篇文章中查看我的答案:How to fix error ::Format of the initialization string does not conform to specification starting at index 0::

答案 7 :(得分:2)

我有同样的错误。在我的情况下,这是因为我错过了连接字符串中密码的结束报价。

从此更改

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password" providerName="System.Data.SqlClient" />

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password'" providerName="System.Data.SqlClient" />

答案 8 :(得分:2)

检查您的连接字符串,就像我忘记添加services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));

一样

它会导致错误,当我添加Configuration.GetConnectionString时,它会解决问题

就像现在连接是:

services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));

工作正常(此问题已解决.net核心)

答案 9 :(得分:1)

我将连接字符串配置复制并粘贴到测试项目中,并开始遇到此错误。连接字符串在我的WebAPI项目中工作正常。这是我的解决方法。

UPDATE mytable
SET
    start_date = least('2999-01-01'::DATE, greatest('1900-01-01'::DATE, start_date)),
    end_date = least('2999-01-01'::DATE, greatest('1900-01-01'::DATE, end_date))
WHERE
    start_date < '1900-01-01'::DATE OR
    start_date >= '2999-01-01'::DATE OR
    end_date < '1900-01-01'::DATE OR
    end_date >= '2999-01-01'::DATE;

答案 10 :(得分:1)

我遇到了这个错误,结果证明是我用使用/结束使用包围了一个(新)表适配器。只需更改 tableadapter 以保持更长时间(在我的实例中的课程持续时间)就为我解决了这个问题。也许这会对某人有所帮助。

答案 11 :(得分:1)

就我而言,我遇到了类似的错误:

应用程序引发了未处理的异常。 System.ArgumentException:初始化字符串的格式不符合从索引91开始的规范。

我将连接字符串从以下位置更改:

Server = .;数据库= dbname;用户ID = myuserid;密码= mypassword”

收件人:

服务器= .;数据库=数据库名称;用户ID = myuserid;密码='mypassword'“

并且有效,我在密码中添加了单引号。

答案 12 :(得分:1)

我在连接字符串的末尾删除了“,并且可以正常工作

代替

https://onehundred.com/verify?queryParam=123

已使用

/validate

按如下所示设置DefaultConnection

server 1
  

注意:在connectionString中不包括:
          | x |元数据信息:“ metadata = res:// * /”
          | x |编码的引号:“”“

答案 13 :(得分:1)

我遇到了同样的问题,发现IIS的部署没有正确设置连接字符串。在IIS中查看站点的连接字符串时,它们是'$(ReplacableToken_devConnection-Web.config Connection String_0)',而不是实际的连接字符串。我在那里更新了它们,并且都按预期工作了

答案 14 :(得分:1)

我的连接字符串中有拼写错误“Database == PESitecore1_master”

<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>

答案 15 :(得分:1)

我的问题是我在数据库对象的构造函数中添加了数据库日志代码,这似乎对我的azure部署配置文件造成了严重破坏。

仅供参考 - 我简化了这个例子,在实际代码中,它在生产中被关闭了(但仍然在代码中)

public class MyDB : DbContext
{
    public MyDB()
    {
         this.Database.Log = x => { Debug.WriteLine(x); };
    }
}

答案 16 :(得分:1)

我遇到了同样的问题,最后我设法通过以下方式解决了这个问题:

问题出在我的web.config中的连接字符串定义中。

<add name="DefaultConnection" connectionString="DefaultConnection_ConnectionString" providerName="System.Data.SqlClient"/>

以上在本地工作得很好,因为我在管理用户和角色时使用了本地数据库。当我将我的应用程序转移到IIS时,本地数据库不再可访问,此外我想在SQL Server中使用我的数据库。所以我将以上连接字符串更改为以下SQL Server DB等效项:

<add name="DefaultConnection" connectionString="data source=MY_SQL_SERVER; Initial Catalog=MY_DATABASE_NAME; Persist Security Info=true; User Id=sa;Password=Mybl00dyPa$$" providerName="System.Data.SqlClient"/>

注意:上面也假设您将从本地框中使用相同的SQL Server(如果您将其合并到本地web.config中 - 这就是我在我的情况下所做的)。

答案 17 :(得分:1)

当您将网页从一个解决方案复制到另一个解决方案,然后运行解决方案并发现它在webconfig中具有不同的连接字符串名称时,也会发生这种情况。然后,您不小心在页面的设计视图中的属性面板中更改连接字符串的名称。

最好只在代码部分而不是设计中更改它。

答案 18 :(得分:0)

我的问题不是我提供的连接字符串错误,或者不是我以为我使用的app.config中的连接字符串是错误的,而是我使用了错误的app.config。

答案 19 :(得分:0)

有时Sql Server服务尚未启动。这可能会产生错误。转到服务并启动Sql Server。这应该使它工作。 enter image description here

答案 20 :(得分:0)

对于另一个不幸的灵魂,该灵魂正在管理使用内联sqldatasource的旧版Webforms应用程序以及存储在web.config中的连接字符串,那么,如果您访问<%APSDataConnectionString%>之类的连接字符串,则可能会出现此错误。代替 <%$ ConnectionStrings:MyConnectionString%>。将.NET从3.5升级到4.x时,这发生在我们身上。

<asp:DropDownList ID="ddl" runat="server" DataSourceID="SqlDataSource1"
  DataTextField="value" DataValueField="id"></asp:DropDownList>                
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
  ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
  SelectCommand="select id, value from a_table">
</asp:SqlDataSource>

答案 21 :(得分:0)

在我的情况下,问题是在服务器上,应用程序使用了另一个appsettings.json文件。

答案 22 :(得分:0)

我也有此错误,并能够按照以下方法解决: 我之前将连接字符串写入appsettings.json到我创建的部分中(ConnectionsStrings(注意多余的“ s”),并尝试连接到导致错误的数据库。这是一个ASP.NET CORE应用程序,所以我想使用.GetConnectionString方法连接到它(有关here的详细信息)。似乎该方法在“ ConnectionStrings”部分中隐式搜索了一个连接字符串,该字符串不存在。当我更改/更正它时到“ ConnectionStrings”,它按预期工作。

答案 23 :(得分:0)

据我所知,只要您的解决方案中有多个连接字符串(当前项目,启动项目等),您可能会遇到此错误

此链接可能对您有帮助 click

答案 24 :(得分:0)

在我的情况下,问题出在连接字符串的编码中。

在本地它可以正常工作,但是在生产环境中安装它时会显示此错误。

我的应用程序允许使用一种形式来设置连接字符串,并且当将连接字符串从本地复制到生产环境时,引入了不可见的字符,尽管该连接字符串在字节级别在视觉上是相同的,

您可以按照以下步骤检查这是否是您的问题:

  1. 将您的连接字符串复制到Notepad++
  2. 将编码更改为ANSI。在菜单Encoding>编码为ANSI。
  3. 检查是否包含其他字符。

如果已包含这些字符,请删除它们并再次粘贴连接字符串。

答案 25 :(得分:0)

我整天都遇到同样的问题。该错误肯定表示连接字符串问题,因为索引0是连接字符串。我的问题是在Startup类中。我用过:

var connection = Configuration["ConnectionStrings:DefaultConnection"];
services.AddControllersWithViews();
services.AddApplicationInsightsTelemetry();
services.AddDbContextPool<Models.PicTickContext>(options => options.UseSqlServer("connection"));`

这是错误的,而是使用此:

services.AddControllersWithViews();
services.AddApplicationInsightsTelemetry();
services.AddDbContextPool<Models.PicTickContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

我的问题解决了。

答案 26 :(得分:0)

您必须使用从 DbContext 派生的类的完全相同的名称。

示例:注意类名是:"CreativeFormDbContext"

  public class CreativeFormDbContext : DbContext
    {
        public DbSet<Person> Persons { get; set; }

      
    }

app.config 文件:名称属性为“CreativeFormDbContext”

<connectionStrings> 
    <add name="CreativeFormDbContext" providerName="MySql.Data.MySqlClient"
        connectionString="Server=localhost;Database=creativeform;Uid=username;Pwd=pass"/>
  </connectionStrings>

答案 27 :(得分:0)

在 aspnetcore 中使用 SQLite 遇到了这个问题。我写了

 "DefaultSQLiteConnection": "MyBlog.db"

代替

"DefaultSQLiteConnection": "Data Source = MyBlog.db"