2013-04-24 7 views
6

Ich benutze Microsoft Enterprise Lip II habe diese Methode zum Einfügen von Ressourcen auf der Website Ich bekomme diesen Fehler, ich glaube nicht, es ist Erlaubnis Problem und ich weiß wirklich nicht, wie it.by die Art und Weise zu lösen ich die connection testen und feinFormat der Initialisierungszeichenfolge entspricht nicht der Spezifikation ab Index 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 gefangen HResult = -2147024809
Message = Format der Initialisierungszeichenfolge wurde funktionierts nicht konform mit Spezifikation beginnend bei Index 0. Quelle = System.Da Stacktrace ta: bei System.Data.Common.DbConnectionOptions.GetKeyValuePair (String Connection, Int32 current, Stringpuffer, Boolean useOdbcRules, String & keyname, String & keyvalue) bei System.Data.Common.DbConnectionOptions.ParseInternal (Hashtable parsetable, String connection~~POS=TRUNC, Boolean buildChain, Hashtable Synonyme, Boolean firstKey) bei System.Data.Common.DbConnectionOptions..ctor (String connection~~POS=TRUNC, Hashtable Synonyme, Boolean useOdbcRules) bei System.Data.SqlClient.SqlConnectionString..ctor (String connectionString) bei System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions (String Connection, DbConnectionOptions vorherige) bei System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup (DbConnectionPoolKey Schlüssel, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions & userConnectionOptions) bei System.Data.SqlClient.SqlConnection.ConnectionString_Set (DbConnectionPoolKey key) bei System. Data.SqlClient.SqlConnection.set_ConnectionString (String-Wert) bei Microsoft.Practices.EnterpriseLibrary.Data.Database.CreateConnection() bei Microsoft.Practices.EnterpriseLibrary.Data.Database.GetNewOpenConnection() bei Microsoft.Practices.EnterpriseLibrary.Data .Database.GetWrappedConnection() bei Microsoft.Practices.EnterpriseLibrary.Data.Database.GetOpenConnection() bei Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery (DbCommand Befehl) bei Christoc.Modules.ResourceModule.App_Code.BOL.Resoursce.Insert (Resoursce r) in c: \ inetpub \ wwwroot \ Ideapark \ DesktopModules \ resource \ App_Code \ BOL \ Resoursce.cs: line 54 Innerexception:

Antwort

9

Diese in der Regel bedeutet, dass Ihre Verbindungszeichenfolge ist nicht gut. Wenn Sie sich die Stack-Ablaufverfolgung ansehen, werden Sie feststellen, dass dies fehlschlägt, wenn Sie versuchen, Ihre Verbindungszeichenfolge zu interpretieren.

Überprüfen Sie die Verbindungszeichenfolge sicherzustellen, dass es richtig ist - oder es hier posten, um Hilfe (aber ohne sensible Informationen wie Passwörter;))

UPDATE

Nach dem SqlDatabase documentation die SQLDatabase Die Klasse nimmt eine Verbindungszeichenfolge und keinen Schlüssel für die Konfiguration der Verbindungszeichenfolge.

So

new SqlDatabase("SiteSqlServer"); 

Sollte

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

Database objDB = new SqlDatabase(connection.ConnectionString); 

(Ich habe jede defensive Code hier der Kürze halber weggelassen)