2013-04-24 13 views
6

Sto utilizzando Microsoft Enterprise Lip II avere questo metodo per inserire la risorsa nel sito Web Ho riscontrato questo errore non credo sia un problema di autorizzazione e davvero non so come risolvere it.by il mio modo di testare la connectionStrings e funzionano beneIl formato della stringa di inizializzazione non è conforme alle specifiche a partire dall'indice 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 è stato catturato HResult = -2147024809
Messaggio = Formato della stringa di inizializzazione fa non conforme alla specifica a partire dall'indice 0. Origine = System.Da ta StackTrace: a System.Data.Common.DbConnectionOptions.GetKeyValuePair (String connectionString, Int32 CurrentPosition, tampone StringBuilder, booleani useOdbcRules, String & keyname, String & keyvalue) a System.Data.Common.DbConnectionOptions.ParseInternal (Hashtable parsetable, String connectionString, booleano buildChain, Hashtable sinonimi, booleano firstKey) a System.Data.Common.DbConnectionOptions..ctor (String connectionString, sinonimi Hashtable, booleano useOdbcRules) a System.Data.SqlClient.SqlConnectionString..ctor (String connectionString) in System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions (String ConnectionString DbConnectionOptions precedenti) a System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup (DbConnectionPoolKey chiave, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions & userConnectionOptions) a System.Data.SqlClient.SqlConnection.ConnectionString_Set (DbConnectionPoolKey chiave) al sistema. Data.SqlClient.SqlConnection.set_ConnectionString (valore String) a Microsoft.Practices.EnterpriseLibrary.Data.Database.CreateConnection() a Microsoft.Practices.EnterpriseLibrary.Data.Database.GetNewOpenConnection() a Microsoft.Practices.EnterpriseLibrary.Data .Database.GetWrappedConnection() a Microsoft.Practices.EnterpriseLibrary.Data.Database.GetOpenConnection() a Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery (DbCommand comando) a Christoc.Modules.ResourceModule.App_Code.BOL.Resoursce.Insert (Resoursce R) in c: \ inetpub \ wwwroot \ Ideapark \ DesktopModules \ ResourceModule \ App_Code \ BOL \ Resoursce.cs: linea 54 InnerException:

risposta

9

Questo di solito significa che la stringa di connessione non è nulla di buono. Se si esamina la traccia dello stack, si noterà che ciò non funziona quando si tenta di interpretare la stringa di connessione.

Controllare la stringa di connessione per assicurarsi che sia corretto - o postare qui per un aiuto (ma senza tutte le informazioni sensibili come le password;))

UPDATE

Secondo il SqlDatabase documentation lo SqlDatabase class prende una stringa di connessione, non una chiave per la configurazione della stringa di connessione.

Così

new SqlDatabase("SiteSqlServer"); 

Dovrebbe essere

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

Database objDB = new SqlDatabase(connection.ConnectionString); 

(ho omesso alcun codice difensiva qui per brevità)

Problemi correlati