2013-04-24 50 views
6

dizini ile başlayan belirtime uygun değil Ben Microsoft Enterprise Lip II kullanıyorum Bu Web sitesi Web sitesine ekle Bu soruna bir inanıyorum sorun olduğunu düşünmüyorum ve gerçekten başlatma dizesinin HResult = -2147024809
İleti = Format yakalandı ı it.by ben connectionStrings sınamak şekilde çözmek için nasıl bilmiyorum ve gayetBiçimlendirme dizesinin biçimi, 0

<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 işliyor 0 dizininden başlayan belirtimine uygun değil. Kaynak = System.Da ta StackTrace: System.Data.Common.DbConnectionOptions.GetKeyValuePair de (String connectionString, ınt32 currentPosition StringBuilder tamponu, Boole useOdbcRules String & keyname, dize & keyvalue) System.Data.Common.DbConnectionOptions.ParseInternal de (Hashtable'a parsetable, System.Data.Common.DbConnectionOptions..ctor de dize connectionString, Boolean buildChain, Hashtable eş, Boole firstKey) (string connectionString, hashtable'a eş, Boole useOdbcRules) System.Data.SqlClient.SqlConnectionString..ctor de (String connectionString) System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions (Dize) ÖncekiconnectionString, DbConnectionOptions) System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup de (DbConnectionPoolKey anahtar, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions & userConnectionOptions) sistemi de System.Data.SqlClient.SqlConnection.ConnectionString_Set de (DbConnectionPoolKey tuşu) . Data.SqlClient.SqlConnection.set_ConnectionString Microsoft.Practices.EnterpriseLibrary.Data de Microsoft.Practices.EnterpriseLibrary.Data.Database.GetNewOpenConnection() de Microsoft.Practices.EnterpriseLibrary.Data.Database.CreateConnection() (string değeri) .Database.GetWrappedConnection()Christoc.Modules.ResourceModule.App_Code.BOL.Resoursce.Insert de Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery (DbCommand komutu) de Microsoft.Practices.EnterpriseLibrary.Data.Database.GetOpenConnection() (Resoursce az c r): \ inetpub \ wwwroot \ Ideapark \ DesktopModules \ ResourceModule \ App_Code \ BOL \ Resoursce.cs: satır 54 InnerException:

cevap

9

Bu genellikle bağlantı dizesi bir işe yaramaz demektir. Yığın izine bakarsanız, bağlantı dizginizi yorumlamaya çalışırken bunun başarısız olduğunu görürsünüz.

doğru olduğundan olmak için bağlantı dizesini kontrol edin - (şifreler gibi hassas bilgilere yer verilmeden ama;) ya da yardım için burada yazılan)

GÜNCELLEME

SqlDatabase documentation SqlDatabase göre sınıf bağlantı dizesi yapılandırmasına bir anahtar değil bir bağlantı dizesi alır.

Yani

new SqlDatabase("SiteSqlServer"); 

olmalı

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

Database objDB = new SqlDatabase(connection.ConnectionString); 

(ı kısalık için burada herhangi bir savunma kod atladık)