2016-04-11 4 views
0

私はC#.NET 4.5コンソールアプリケーションを実行しています。 私の設定ファイルは次のようになります。binディレクトリから実行すると、 "ネットワークパスが見つかりませんでした"/"Named Pipes Provider、エラー40" 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> 

マイSQLインタフェースは、次のとおりです。

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; 
} 

私は、Visual Studioから起動したときにこれが見事に動作します。時間の100%。

しかし、私はbin/Debugに行くと.exeを実行する場合、私はエラー

を取得し、以下のcatchステートメントで内部例外がある:

を「ネットワークパスが見つかりませんでした」

ここに興味深い部分があります:usingにブレークポイントを設定し、IT WORKSを実行する場合(bin/Debugからプロセスを実行してからVSのプロセスにアタッチすることに注意してください)。その後、私はブレークポイントITワークスを削除します。もし私がを再構築した場合は、を再構築して、ITはまだ動作します。しかし、もし私がの場合、に再構築します。再構築、それは再び失敗します。だから、

  • は常にVSからの実行作品、
  • Iクリーン/ビルドします/ binに/デバッグから実行し、それが失敗した場合。
  • コードをステップ実行しても動作し、その後はbin/Debugから動作します。

私はとても混乱しています:)。

助けていただければ幸いです。これは、単にビン/ Debugディレクトリから手動で.exeファイルを実行していないとき、VS内から実行時にコードが働いていたので、奇妙な問題でした

おかげ -Ed

+0

LocalDBまたは一部のバージョンのSQL Serverに接続していますか? – Szeki

+0

s_connectionStringはどこに設定されていますか?ネットワークパスが見つからない他の何かのように動作しています。ファイルの場所などです。 – BugFinder

+0

接続文字列ごとにリモートサーバーでSQL Serverを使用しています。私のアプリはログファイルに接続文字列を出力し、それは正しく読み込まれます。 –

答えて

0

。見知らぬ人は、VSを使って手動で.exeを実行し、sql .open呼び出しを実行すると失敗しましたが、その後はクリーン/リビルドを実行するまで動作します。絶対に意味をなさない。

それから、私は他のStackoverflowの記事で、ウイルス対策/ファイアウォールがそれと関係しているかもしれないことを知りました。それはしました。 BitDefenderのファイアウォールを破棄して問題を解決しました。私はまだ行動を完全に理解していません...しかし、私は明らかに相関を見ることができ、それは100%です。ファイアウォールを嫌う、それは動作します。有効にすると失敗します。期間。奇妙な。 'これが少なくとも1人の人を助けてくれることを願っています!

-ed

関連する問題