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

时间:2011-03-07 12:21:59

标签: deployment iis-7 asp.net-mvc-3 connection-string

我有一个ASP.Net MVC应用程序,它在我的本地开发机器上运行良好。但是,当部署到IIS7时,在尝试登录时会出现以下错误:

  

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

发布此错误的大多数人通过以某种方式更改其连接字符串来解决此问题。但是,本地和已部署应用程序上的连接字符串是相同的。连接字符串是这样的:

<add name="ApplicationServices" connectionString="Data Source=*server*\*instance*;Initial Catalog=*database*;Integrated Security=True;"
      providerName="System.Data.SqlClient" />

在我的情况下导致此错误的原因是什么?

8 个答案:

答案 0 :(得分:16)

  

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

Web.config:

<connectionStrings>
    <add name="TestDataConnectionString" connectionString="Data Source=.\SQLExpress;Initial Catalog=TestData;User ID=satest;Password=satest"
     />
  </connectionStrings>

在aspx.cs页面中,代码必须采用以下格式编写:

SqlConnection con = new
SqlConnection(ConfigurationManager.ConnectionStrings["TestDataConnectionString"].ToString());

答案 1 :(得分:12)

当我选中Enable CodeFirst Migrations复选框时,

Web部署工具在配置中创建了错误的行。

答案 2 :(得分:2)

在我的情况下,我不小心写了#34;密码:&#34;而不是&#34;密码=&#34;在我的conn字符串

答案 3 :(得分:1)

检查以确保Web.config中的连接字符串的凭据正确。我失去了对数据库具有权限的帐户的密码。

答案 4 :(得分:1)

我遇到了同样的错误。在我的情况下,配置转换无法正常工作。 连接字符串时,配置转换存在问题。 一些参考:

也可以将代码编写为aspx.cs页面中的

using (IDbConnection dbConnection =
       new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString))
       {
           // TODO: Write SQL Stored Procedures or SQL Statements using Dapper
       }

对于那些想要了解Dapper的更多信息的人。

希望这有帮助。

答案 5 :(得分:1)

如果您一直在使用Visual Studio发布向导进行部署并选中“设置”中的执行代码优先迁移复选框,则会自动将新的ConnectionString添加到Server Web.config文件中,类似于到下面的第二行:

<add name="LCWeb3Context" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=LCWeb3;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\LCWeb3.mdf" providerName="System.Data.SqlClient" />
<add name="LCWeb3Context_DatabasePublish" connectionString="LCWeb3Context_DatabasePublish.ConnetionString" providerName="System.Data.SqlClient" />

首先,请注意添加的连接字符串包含&#34; ConnetionString&#34;:我认为它应该是&#34; ConnectionString&#34;!但那不是解决方案。

为了避免初始化字符串的格式不符合从索引0和#34开始的规范;错误,请在“发布向导”中执行以下操作:

  1. 设置中,选择配置:发布
  2. 设置中,不要忘记将连接字符串粘贴到 &#34; 远程连接字符串&#34;字段
  3. 设置中,选中执行代码优先迁移
  4. 执行上述操作时,添加到 Server Web.config 的连接字符串显示为:

    <add name="LCWeb3Context_DatabasePublish" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\LCWeb3.mdf;Initial Catalog=LCWeb3;Integrated Security=True" providerName="System.Data.SqlClient" />
    

    和&#34;初始化字符串的格式不符合从索引0和#34开始的规范;错误不再发生。

答案 6 :(得分:0)

当我在软件包管理器控制台中使用命令:“更新数据库”时,我遇到了同样的问题。

要修复,请确保将启动项目设置为要更新的项目。

E.g。我有Db项目和Web项目,确保在Db项目上设置启动项目,当运行“更新 - 数据库”时,否则,它将尝试在Web项目内搜索。

答案 7 :(得分:-3)

未正确设置SQL Server上的权限。我现在通过正确设置服务器权限来解决这个问题。