2011-01-31 11 views
1

私はMVCサイトを展開しており、そのデータベースはWebホスティングプロバイダにあります。既定のASPNETテーブルとアプリケーションカスタムテーブルは、同じデータベースを共有します。 Web設定には2つの接続文字列があり、1つはApplicationServices用、もう1つはLINQ to SQL dbml用です。彼らは同じデータベースを共有するので、私は両方のために同じ接続文字列を使用します。LINQ to SQLはデータベースに接続できませんが、接続文字列は良好です

アプリケーションサービス機能は、私がサイトにログインできるように機能しているようです。しかし、戻り値のコントローラは今回は自分のデータコンテキストを使用しようとしているので例外がスローされます。同じ接続文字列と、まだそれは私にエラーを与える:もちろん

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

これはすべて私のローカルマシン上で正常に動作します。私は、LINQ to SQLが有効な接続文字列で接続できない理由について、何かアドバイスしています。

+0

エラーが名前パイプを示しているため、私はあなたのホスト環境では名前付きパイプがサポートされていないと思われます。接続文字列はどのように見えますか? –

答えて

0

LINQ to SQLのdbmlファイルはクラスライブラリ内にあり、起動時のASP.NET Webプロジェクトはこのライブラリをデータレイヤとして使用します。 LINQ to SQLは、Visual Studioを実行するときにクラスライブラリのapp.configから接続文字列を読み込んでいました。 Webプロジェクトを公開すると、従属データライブラリが含まれますが、app.configは含まれません。ここで、完全修飾された接続文字列を、プライマリプロジェクトのweb.configに手動でコピーして、アセンブリのデフォルトを上書きする必要があることを理解しました。私が直面していた問題は、app.configが存在せずweb.configに接続文字列がないことです。少なくとも完全修飾されていないライブラリは、開発のデフォルトに落ちていました。

+0

ダンは優れたインプットを提供しています。これにより、web.configの "DefaultConnection"キーにも動作する接続文字列があることに注目する価値があります。それも問題の原因になる可能性があります。 –