我有一个ASP.Net应用程序,可以在我的本地开发机器上运行。
当我在线运行此应用程序时,它显示以下错误
初始化字符串的格式不符合规范 从索引0开始
答案 0 :(得分:146)
检查您的连接字符串。如果您需要帮助,请检查Connection Strings,其中包含常用的列表。
常用的连接字符串:
标准安全
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;
标准安全
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;
<强> 标准 强>
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
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)
答案 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)
在我的情况下,问题出在连接字符串的编码中。
在本地它可以正常工作,但是在生产环境中安装它时会显示此错误。
我的应用程序允许使用一种形式来设置连接字符串,并且当将连接字符串从本地复制到生产环境时,引入了不可见的字符,尽管该连接字符串在字节级别在视觉上是相同的,
您可以按照以下步骤检查这是否是您的问题:
如果已包含这些字符,请删除它们并再次粘贴连接字符串。
答案 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"