私は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
LocalDBまたは一部のバージョンのSQL Serverに接続していますか? – Szeki
s_connectionStringはどこに設定されていますか?ネットワークパスが見つからない他の何かのように動作しています。ファイルの場所などです。 – BugFinder
接続文字列ごとにリモートサーバーでSQL Serverを使用しています。私のアプリはログファイルに接続文字列を出力し、それは正しく読み込まれます。 –