OK、私は困惑しています。私は、Entity Frameworkを介してデータベースと対話する.NET Winformsアプリケーションを作成しようとしています。私はもともと、失敗した後にデータベースと話すことができるASP.NET MVC3アプリ(別々のDALレイヤーを持つ)を作成しました。最初に接続を開こうとすると、タイムアウトになります。ブラウザでF5キーを押すと、正常に接続されます。 私はこのDALをWinformsアプリケーションで参照しました。エンティティの例外:Timeoutが有効期限切れで、基になるプロバイダーが開けませんでした
- SQL Management StudioのSQL Authを使用してデータベースに接続できます。
- 私はVS2010でADO.NET Dataクラスを作成できます(接続してテーブルを取得し、app.configに接続文字列を格納します)。
- ただし、Winformsアプリケーションを実行すると、接続できません。 InnerExceptionが "Timeout expired"という例外が発生しました。
web.configからapp.configに接続文字列をコピーしました。
SQLデータベースは、WindowsホームサーバーSERVERでホストされています。私はワークグループ(ドメインなし)にいます。 Management StudioとVSでSERVER \ SQLEXPRESSを使用して正常に接続します。私が試した
もの:
- クライアントマシン上でファイアウォールを無効にします。
- サーバー上のDTCを有効にし、msdtc.exeをサーバーの除外リストに追加しました。
- 名前付きパイプがSQLサーバーインスタンスで有効になっていることを確認しました。
- 異なるSQLユーザーが試行しました。
- C#で接続を構築するさまざまな方法を試してみました。
- 私のWinFormsプロジェクト(DALを参照していない)にローカルな新しいADO.NETデータクラスを生成しました。 VSは正常に接続し、テーブルを読み取り、コードを生成します。しかし、実行中のアプリケーションは、 "Timeout Expired" SqlExceptionを引き起こします。
アプリの実行中に接続できません。 ProcessExplorerでアプリを見ると、SYN_SENTメッセージでリモートポート4845に接続しようとすると、TCPウィンドウにエントリが表示されます。それが正しいかどうかは分かりません。
私はgoogle'dとbing'dここ数日間、私はこの例外を言及Stackoverflow上のすべての記事と返信をここで読んだが、私は壁にヒットしました。感謝
<add name="LLDBEntities" connectionString="metadata=res://*/LLDB.csdl|res://*/LLDB.ssdl|res://*/LLDB.msl;provider=System.Data.SqlClient;provider connection string="data source=SERVER\SQLEXPRESS;initial catalog=LLDB;persist security info=True;user id=sa;password=sapwd;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
すべてのヘルプ、何が起こっているのかを把握する方法についても、任意のヒント:
この
は、VSがDBを読んだ後に生成のConnectionStringです。
saパスワードを変更したい場合があります:) –
これは単なるプレースホルダです:-)実際のものではありません。 –