1

Ich schreibe eine Anwendung in ASP.NET, wo ich häufige SQL-Verbindungen und häufig ich meine alle 2 Sekunden. Es ist eine Echtzeit-Datenanwendung. BD Engine ist SQL SERVER 2008R2.Understanding ASP.NET ConnectionPool und String-Sicherheit

Jeder Benutzer verbindet sich mit mindestens zwei verschiedenen Datenbanken. Mein Problem ist, ich kann immer noch nicht verstehen, die Verbindung Pooling und wie viel von ihnen Verbindungen habe ich nach einigen Abfragen.

ich die folgenden Methoden implementiert:

private static string composeConnectionString(string connectTo) 
{ 
    StringBuilder sqlSB = new StringBuilder("Data Source="); 
     sqlSB.Append(dataSource); 
     sqlSB.Append(";Min Pool Size="); 
     sqlSB.Append(minPoolSize); 
     sqlSB.Append(";Max Pool Size="); 
     sqlSB.Append(maxPoolSize); 
     sqlSB.Append(";Connection Timeout="); 
     sqlSB.Append(connectionTimeout); 
     sqlSB.Append(";Initial Catalog="); 
     sqlSB.Append(connectTo); 
     sqlSB.Append(";Integrated Security="); 
     sqlSB.Append(integratesSecurity); 
     sqlSB.Append(";User Id="); 
     sqlSB.Append(userId); 
     sqlSB.Append(";Password="); 
     sqlSB.Append(password); 
     sqlSB.Append(";MultipleActiveResultSets="); 
     sqlSB.Append(multipleActiveResultSets); 
    return sqlSB.ToString(); 
} 

public static SqlConnection getConnection(string connectTo) 
{ 
    SqlConnection connection = null; 
    string connectionString = composeConnectionString(connectTo); 

    try 
    { 
     connection = new SqlConnection(connectionString); 
    } 
    catch (Exception ex) 
    { 
     if (connection != null) 
      connection = null; 
     ExceptionLogger.LogException(ex, connectionString); 
    } 
    return connection; 
} 

An diesem Punkt beginne ich für jeden SQLConnection- wenn neue Connection ist creater in Frage suche ich? Wie sicher ist die Verbindungszeichenfolge?

Fragen Sie mich nach Updates, wenn etwas verschwommen erscheint.

Danke euch allen.

+0

Warum erstellen Sie dynamisch die Verbindungszeichenfolge? Werden diese Parameter während der Lebensdauer Ihrer Anwendung geändert? – Steve

+0

Ich bin nicht sicher, dass ich folge, aber wenn Sie den SQL Server-Verbindungspool meinen, dann wird kein neuer Pool für jede Verbindung erstellt, sondern jede Verbindung wird aus dem Verbindungspool (vereinfacht) abgerufen. Wie für "sicher", dann kommt es darauf an, was du damit machst. Wenn Sie meinen, Sie können in einer Verbindung Informationen über eine andere Verbindung erhalten, dann nein.Wenn Sie jedoch eine Verbindungszeichenfolge anderen Teilen Ihrer Anwendung zur Verfügung stellen, liegt es an Ihnen, diese sicher zu machen. –

+0

@Steve Ich baue es dynamisch, weil ich je nach Benutzer eine Verbindung zu verschiedenen DBs herstellen. Ich weiß nicht, zu welchen DBs ich mich verbinden werde, bis ich ihre Konfigurationsdatei gelesen habe. –

Antwort

1
  1. Hängt von Ihrer Konfiguration ab. Wenn Sie mindestens eine Verbindung Ihren Pool konfigurieren und maximal 3, wenn Sie Ihre erste Verbindung geschieht, wenn Pooling aktiviert ist, wird die Verbindung prüfen für mindestens 1 und maximal 3.

Die pooler behält das Eigentum an der physischen Verbindung. Er verwaltet Verbindungen, indem er eine Reihe aktiver Verbindungen für jede gegebene Verbindungskonfiguration aktiv hält. Wann immer ein Benutzer auf einer -Verbindung geöffnet aufruft, sucht der Pooler nach einer verfügbaren Verbindung im Pool. Wenn eine gepoolte Verbindung verfügbar ist, wird sie an den Aufrufer zurückgegeben, anstatt eine neue Verbindung zu öffnen. Wenn die Anwendung die Verbindung für die Verbindung aufruft, gibt der Pooler sie an die gepoolten aktiven -Verbindungen zurück, anstatt sie zu schließen. Sobald die Verbindung zum Pool zurückgegeben wird, kann sie beim nächsten offenen Anruf erneut verwendet werden.

Sie können mehr hier lesen: https://msdn.microsoft.com/en-us/library/8xx3tyca%28v=vs.110%29.aspx

  1. über die Verbindungszeichenfolge, wenn Sie Benutzername und Passwort als Berechtigungsnachweise, Sie haben ein Sicherheitsproblem. Sie können die Windows-Authentifizierung verwenden, um sicherzustellen, dass Ihre Verbindungszeichenfolge keine vertraulichen Daten enthält. Wenn Sie IIS verwenden, können Sie die Verbindungszeichenfolge darauf speichern, um Ihre Daten zu schützen.

mehr über Verbindungszeichenfolge Lesen Sie hier: https://msdn.microsoft.com/pt-br/library/system.data.sqlclient.sqlconnection.connectionstring%28v=vs.110%29.aspx

Und über die Verbindungszeichenfolge hier Schutz: https://msdn.microsoft.com/en-us/library/89211k9b%28v=vs.110%29.aspx

Hoffe, es hilft.

+0

Ziemlich aufschlussreich, danke. In Bezug auf das Pooling war ich besorgt, dass es jedes Mal, wenn ich die Saite gebaut habe, einen anderen Pool bekommt. In Bezug auf die Sicherheit sollte Persist Security Info = False gesetzt werden und ConnectionStringBuilder sollte für schreibgeschützte Anmeldeinformationen ausreichen. –