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


142

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

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

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


1
您可能进行了错误的sql调用/连接。如果您使用Google 博客,请访问blogs.msdn.com/b/jongallant/archive/2009/05/02/…–亚里士多德
Aristos)

1
stackoverflow.com/questions/9040266/…上,投票率最高的答案似乎比此处投票率最高的答案更为准确:尽管您在开发中使用的连接字符串可能有效,但是发布仍需要提供适合生产的其他连接字符串,并且这可能会失败。例如,询问该问题的人发现该连接为“ $(ReplacableToken_mcn-Web.config连接字符串_0)”,这表示应在发布过程中进行的替换并未发生。
divega

Answers:


183

检查您的连接字符串。如果您需要帮助,请检查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;

9
我的问题与错误的ConnectionString没有关系。我能够从开发人员机器连接到生产数据库并使用它。部署相同的设置时,出现此错误。您知道什么地方可能出问题吗?谢谢
Denis Besic

3
丹尼斯可能发生了很多事情。首先,您的服务器和开发机器是否在同一网络中?您使用哪种登录名?您是否使用任何类型的代理,您是否在产品服务器中的防火墙后面?正在进入任何VPN?
HanletEscaño13年6

2
我不确定是谁负责,是Visual Studio,Web部署工具还是托管smarterasp.net。部署应用程序时,发生了一些变化,更改了我的连接字符串。我直接访问了web.config并手动更新它,它可以工作。感谢您使用+1的时间;)
Denis Besic

它不起作用,我尝试输入正确的连接字符串。

有人可以看到这个问题吗?stackoverflow.com/questions/46167682/...

18

这可能对某人有帮助。我的密码包含分号,因此正面临此问题。因此请在引号中添加密码。这确实是一个愚蠢的错误。

我更改了以下内容:

<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" />

是的,这是我的密码密码问题; 所以加上``解决了它
克劳迪奥

11

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

致电时出现此错误enable-migrations。即使在Package Manager Console我选择的正确的位置Default project,它仍在查看该启动项目的web.config文件,其中不存在连接字符串。


4
+1。我认为起始项目应该是包含连接字符串的项目。这是我的问题。感谢您对启动项目的建议。
2016年

4

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

服务器 = FOOSERVER;数据库= BLAH_DB;池= false;连接超时= 60;集成安全性= SSPI;

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


4

我有同样的问题。该站点在本地运行良好,但是如果遇到上述消息,天蓝色肯定会失败。

原来问题是在ctor中设置了连接字符串,如下所示:

    public DatabaseContext() 
    {
        Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
    }

不起作用,这将:

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

打败我..


这是一个奇怪的解决方法,但也挽救了我的性命。根据记录,“ db”是配置文件中连接字符串的键的名称(我的不是“ db”)
mike

也为我修复了它。我有一个有效的连接字符串,但手动进行设置会引发“初始化字符串的格式不符合从索引0开始的规范”。
Sardaukar

4

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

它会导致错误,在这里添加Configuration.GetConnectionString时就可以解决问题

就像现在的连接是:

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

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


3

引用完整的sp路径可以为我解决此问题:

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


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" />

请编写一些示例代码或其他内容以使您的答案完美。一行不能解释一切
Manish Kumawat '17

当然。在上面编辑了我的答案。
Amer Bashoeb

1

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

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


1

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

仅供参考-我简化了此示例,在实际代码中,该代码已在生产环境中关闭(但仍在代码中)

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

1

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

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

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中-这正是我的情况)。


1

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


你能PLZ更复杂的是
TechnicalKeera

我也有同样的问题,并且患有3个星期stackoverflow.com/questions/48929891/…–
TechnicalKeera

1

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

var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var unitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));

1

我在连接字符串的末尾删除了“,

代替

App=EntityFramework&quot;

用过的

App=EntityFramework;

如下设置DefaultConnection

<add name="DefaultConnection" connectionString="data source=(local);initial catalog=NamSdb;persist security info=True;user id=sa;password=sa;MultipleActiveResultSets=True;App=EntityFramework;" providerName="System.Data.SqlClient" />

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


0

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



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>

0

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


0

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

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

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

服务器= .;数据库= dbname;用户ID = myuserid;密码= mypassword”

至:

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

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


0

我也遇到此错误,并且能够按以下方法解决:我之前将连接字符串写入appsettings.json到我创建的部分中(ConnectionsStrings(注意额外的“ s”),并尝试连接到导致错误。它是一个ASP.NET CORE应用程序,因此我想使用.GetConnectionString方法(在此进行详细说明)连接到该应用程序。该方法似乎在“ ConnectionStrings”部分中隐式搜索了一个连接字符串。不存在,当我将其更改/更正为“ ConnectionStrings”时,它可以按预期工作。


0

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

此链接可以帮助您 单击

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.