次のように web.config に接続文字列がある場合 (読みやすくするために改行を追加):
<add
name="conn"
connectionString="Data Source=(localdb)\v11.0; Initial
Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True;
AttachDbFilename=D:\Products.mdf"
providerName="System.Data.SqlClient"/>
接続は機能し、データベース エクスプローラーでデータベースに接続できます。
コードで接続文字列を指定するか、ConfigurationManager を使用して取得すると、機能しません。
SqlCommand command = new SqlCommand();
command.CommandText = "select ...";
command.CommandType = CommandType.Text;
SqlConnection cn = new SqlConnection("Data Source=(localdb)\\v11.0;"+
"Initial Catalog=MyDB; Integrated Security=True; "+
"MultipleActiveResultSets=True; AttachDbFilename=D:\\Products.mdf");
command.Connection = cn;
cn.Open();
DataTable dataTable = new DataTable();
SqlDataReader reader;
reader = command.ExecuteReader();
dataTable.Load(reader);
cn.Close();
web.config から接続文字列を取得すると、同じエラーが発生します。
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings
["conn"].ConnectionString;
私が得ているエラーは「System.ComponentModel.Win32Exception:ネットワークパスが見つかりませんでした」です
トレースには次のように書かれています:
SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: 名前付きパイプ プロバイダー、エラー: 40 - SQL Server への接続を開けませんでした)]
これを解決するための助けが必要です。これを何時間も解決しようとしてきましたが、ネットワーク設定を確認する必要があるというオンラインの提案があります (SQL Server Express のローカル インスタンスに接続しているため、適用されません)。サーバー名 (VS Express では同じ文字列が機能しますが、実行中のコードでは機能しません)。
認証の問題でしょうか?もしそうなら、なぜ非有益なエラーですか?
私の投稿を読んでくれてありがとう。これで私を助けてくれることを願っています。
アップデート:
私は次のことを試しました:
グループ全員に、mdf ファイルと ldf ファイルに対する完全なアクセス許可を与える
Web の下のプロジェクト プロパティで、VS 開発サーバーとローカル IIS Web サーバー (IIS Express) の下でプロジェクトを実行しようとしました
「ASP.NET empty Web Application」で作成されたプロジェクトにコードをコピーすると、うまく接続できません。