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

我正在使用Microsoft Enterprise Lip II有这种方法在网站上插入资源我得到这个错误我不认为这是权限问题而且我真的不知道如何解决它。通过我测试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
Message =初始化字符串的格式不符合从索引0开始的规范.Source = System.Data StackTrace:at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString,Int32 currentPosition,StringBuilder buffer,Boolean useOdbcRules,String&keyname, System.Data.Com上的System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable,String connectionString,Boolean buildChain,Hashtable synonyms,Boolean firstKey)中的字符串和键值(String connectionString,Hashtable synonyms,Boolean useOdbcRules)在System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString,DbConnectionOptions previous)的System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)处于System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey键,DbConnectionPoolGroupOptions池选项,DbConnectionOptions& System.Data.SqlClient.S上的userConnectionOptions) 位于Microsoft.Practices.EnterpriseLibrary.Data.Database.GetNewOpenConnection()的Microsoft.Practices.EnterpriseLibrary.Data.Database.CreateConnection()的System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)处的qlConnection.ConnectionString_Set(DbConnectionPoolKey键) Microsoft.Practices.EnterpriseLibrary.Data.Database.GetWrappedConnection()位于Christoc.Modules.ResourceModule的Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery(DbCommand命令)中的Microsoft.Practices.EnterpriseLibrary.Data.Database.GetOpenConnection()。 c:\ inetpub \ wwwroot \ ideaPark \ DesktopModules \ ResourceModule \ App_Code \ BOL \ Resoursce.cs中的App_Code.BOL.Resoursce.Insert(Resoursce r):第54行InnerException:

这通常意味着您的连接字符串没有任何好处。 如果查看堆栈跟踪,您会发现在尝试解释连接字符串时失败了。

检查您的连接字符串以确保它是正确的 – 或在此处发布以获取帮助(但没​​有任何敏感信息,如密码;))

UPDATE

根据SqlDatabase文档 ,SqlDatabase类接受连接字符串,而不是连接字符串配置的键。

所以

 new SqlDatabase("SiteSqlServer"); 

应该

 var connection = ConfigurationManager.ConnectionStrings["SiteSqlServer"]; Database objDB = new SqlDatabase(connection.ConnectionString); 

(为简洁起见,我在此省略了任何防御性代码)