2016-04-11 9 views
0

Ich führe eine C# .NET 4.5 Konsole App. Meine Konfigurationsdatei sieht wie folgt aus:"Der Netzwerkpfad wurde nicht gefunden"/"Named Pipes Provider, Fehler 40" beim Ausführen aus dem bin-Verzeichnis. Works from VS

<connectionStrings> 
    <add name="DataContext" connectionString="data source=1.2.3.4;initial catalog=db1;user id=Jon;password=password;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

My SQL-Schnittstelle ist:

public static DataTable GetDataTableSql(string SqlCommand) 
{ 
    DataSet _data = new DataSet(); 
    try 
    { 
     using (SqlConnection _connection = new SqlConnection(s_connectionString)) 
     { 
      if (_connection.State != ConnectionState.Open) 
      { 
       _connection.Open(); 
      } 
      var _cmd = new SqlCommand(SqlCommand, _connection) {CommandType = CommandType.Text}; 
      //SqlDataAdapter sda = null; 
      using (SqlDataAdapter _sda = new SqlDataAdapter(_cmd)) 
      { 
       _sda.Fill(_data, "data"); 
      } 

      _connection.Close(); 
      _connection.Dispose(); 
     } 
    } 
    catch (Exception _e) 
    { 
     s_logger.Error("GetDataTableSQL failed: {0}, {1}", SqlCommand, _e.Message); 
    } 
    if (_data != null && _data.Tables != null && _data.Tables.Count > 0) 
    { 
     return _data.Tables[0]; 
    } 
    return null; 
} 

Dies funktioniert wunderbar, wenn ich von Visual Studio starten. 100% der Zeit.

Allerdings, wenn ich zu bin/Debug gehen und die EXE-Datei ausführen, bekomme ich einen Fehler

Die innere Ausnahme in der catch-Anweisung unten ist: „der Netzwerkpfad nicht gefunden wurde“

Hier ist der interessante Teil: Wenn ich einen Breakpoint auf der using setzen und durch IT WORKS (beachten Sie, ich führe den Prozess aus bin/Debug und dann Attach an den Prozess mit VS). Dann, wenn ich den Haltepunkt entferne, FUNKTIONIERT. Wenn ich Rebuild, funktioniert es noch. ABER ... wenn ich Reinigen dann Rebuild, schlägt es erneut fehl.

So:

  • von VS Laufen immer funktioniert,
  • Wenn ich reinigen/Bauen/Lauf von bin/Debug, es funktioniert nicht.
  • Wenn ich durch den Code gehe, funktioniert es, und ab dann funktioniert von bin/Debug funktioniert.

Ich bin so verwirrt :).

Hilfe Hilfe wäre willkommen.

Dank -Ed

+0

verbinden Sie LocalDB oder eine Version von SQL Server? – Szeki

+0

Wo ist s_connectionString festgelegt? Netzwerkpfad nicht gefunden klingt mehr wie etwas anderes funktioniert nicht, zB ein Speicherort – BugFinder

+0

Ich verwende SQL Server auf einem Remote-Server wie die Verbindungszeichenfolge. Meine App gibt die Verbindungszeichenfolge an die Protokolldatei aus, die korrekt gelesen wird. –

Antwort

0

Dies war das seltsamste Problem, da der Code, wenn aus VS laufen gearbeitet, nicht nur, wenn die EXE manuell aus dem bin/Debug-Verzeichnis ausgeführt wird. Fremder ist immer noch, dass es fehlschlug, wenn ich VS an die manuell ausgeführte .exe anfügte und durch den sql .open Aufruf schritt, aber danach funktionierte, bis ich einen Clean/Rebuild ausführte. Hat absolut keinen Sinn gemacht.

Dann sah ich auf anderen Stackoverflow Posts, dass die Antivirus/Firewall etwas damit zu tun haben kann. Es tat es. Die BitDefender-Firewall hat mein Problem behoben. Ich verstehe das Verhalten immer noch nicht vollständig ... aber ich kann die Korrelation deutlich sehen und es ist 100%. Zeig die Firewall, es funktioniert. Aktivieren Sie es und es schlägt fehl. Zeitraum. Seltsam. "Ich hoffe, das hilft mindestens einer Person da draußen!

-Ed