web-dev-qa-db-ja.com

初期化文字列の形式が、インデックス0から始まる仕様に準拠していません

私はMicrosoftEnterprise Lip IIを使用して、Webサイトにリソースを挿入するためにこのメソッドを使用しています。このエラーが発生します。これはアクセス許可の問題ではないと思います。実際には、それを解決する方法がわかりません。それはうまくいきます

  <connectionStrings>
    <add name="SiteSqlServer"
      connectionString="Data Source=.;Initial Catalog=databaseName;User ID=sa;Password=***"/>
  </connectionStrings>

 public static int Insert(Resoursce r)
        {
            Database objDB = new SqlDatabase("SiteSqlServer");
            int val = 0;
            using (DbCommand cmd = objDB.GetStoredProcCommand("InsertResoursce"))
            {
                //  OutParameter
                objDB.AddOutParameter(cmd,"@OutResoursceID",DbType.Int32,int.MaxValue);

                //  iNParameter
                objDB.AddInParameter(cmd, "@ModuleId", DbType.Int32, r.ModuleId);
                objDB.AddInParameter(cmd, "@Summary", DbType.StringFixedLength, r.Summary);
                objDB.AddInParameter(cmd, "@PageId", DbType.StringFixedLength, r.PageID);
                objDB.AddInParameter(cmd, "@TypeId", DbType.Int32, r.TypeID);
                objDB.AddInParameter(cmd, "@UserID", DbType.Guid, r.UserID);
                objDB.AddInParameter(cmd, "@Enabled", DbType.Boolean, r.Enabled);
                objDB.AddInParameter(cmd, "@SafetyAlert", DbType.Boolean, r.SafetyAlert);
                objDB.AddInParameter(cmd, "@SaftyAlertText", DbType.StringFixedLength, r.SafetyAlertText);


                try
                {
                     val = objDB.ExecuteNonQuery(cmd);
                     if (val == 1)
                     {
                         return Convert.ToInt32(objDB.GetParameterValue(cmd, "@OutResoursceID"));
                     }
                     else
                     {
                         return -1;
                     }
                }
                catch (Exception ex)
                {


                    throw ex;
                } 

            }

System.ArgumentExceptionがキャッチされましたHResult = -2147024809
メッセージ=初期化文字列の形式がインデックス0から始まる仕様に準拠していません。Source= System.Data StackTrace:at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString、Int32 currentPosition、StringBuilder buffer、Boolean useOdbcRules、String&keyname、String&keyvalue)at System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable、String connectionString、Boolean buildChain、Hashtable synonyms、Boolean firstKey)at System.Data.Common.DbConnectionOptions..ctor(String connectionString、Hashtable同義語、ブールuseOdbcRules)at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString、DbConnectionOptions previous)at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key 、DbConnectionPoolGroupOptions poolOptions、DbConnectionOptions&userConnectionOptions)at System.Data.Sql Client.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key)at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)at Microsoft.Practices.EnterpriseLibrary.Data.Database.CreateConnection()at Microsoft.Practices.EnterpriseLibrary.Data.Database.GetNewOpenConnection( )Microsoft.Practices.EnterpriseLibrary.Data.Database.GetWrappedConnection()at Microsoft.Practices.EnterpriseLibrary.Data.Database.GetOpenConnection()at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery(DbCommand command)atChristoc.Modules。 ResourceModule.App_Code.BOL.Resoursce.Insert(Resoursce r)in c:\ inetpub\wwwroot\ideaPark\DesktopModules\ResourceModule\App_Code\BOL\Resoursce.cs:line 54 InnerException:

7
user1800361

これは通常、接続文字列が適切でないことを意味します。スタックトレースを見ると、接続文字列を解釈しようとすると失敗していることがわかります。

接続文字列が正しいことを確認するか、ここに投稿してください(ただし、パスワードなどの機密情報は含まれていません;))

[〜#〜]更新[〜#〜]

SqlDatabaseドキュメント によると、SqlDatabaseクラスは、接続文字列構成のキーではなく、接続文字列を受け取ります。

そう

new SqlDatabase("SiteSqlServer");

する必要があります

var connection = ConfigurationManager.ConnectionStrings["SiteSqlServer"];

Database objDB = new SqlDatabase(connection.ConnectionString);

(簡潔にするために、ここでは防御コードを省略しました)

12
Fenton