2012-04-01 8 views
0

これは私のコードです:私は、Visual Studioに、この演奏開始を開いた場合LINQ to SQLはデバッグモードでのみ動作しますか?

DataClassesDataContext data = new DataClassesDataContext(); 
var hey = from p in data.Provas 
      select p; 
Response.Write(hey.First().title_it); 

、それはhttp://localhost:51180/Website1/を開き、私はDBから取得した値を取得します。私は(通常、私はこれで開く)http://localhost:8080/でウェブサイトを開くと

しかし、私は得る:

System.Data.SqlClient.SqlException: Cannot open database "Website1" requested by the login. The login failed. 

ログインユーザー 'IIS APPPOOL \ WEBSITE1' に失敗しました。

どうすれば設定できますか? IISの問題?

+2

にアクセスするためにアカウント付与しますこのメッセージは、正確な理由を示しています。あなたはそれを読みました? – usr

+0

しかし、なぜそれがデバッグモードで動作しますか?これは、ログインが失敗しないことを意味します....私はVisual StudioからLINQ SQLクラスを使用してDBを管理することもできます... – markzzz

+0

http://msdn.microsoft.com/en-us/library/aa266913(v= vs.60).aspx –

答えて

3

@usrが指摘したように、答えはあなたの前です。

デバッグモードのフォームでアプリケーションを実行すると、データベースに接続するユーザーは、PCにログインしてVisual Studioを実行しているユーザーです。このユーザー(あなた!)は管理者であり、 SQL Serverで(私はローカルインスタンスを想定しています)。

アプリケーションのアプリケーションプールを変更しない限り、IISのローカルインストールを使用してアプリケーションを実行すると(完全なバージョンであると想定するのが妥当です)、ローカルシステムとして実行されますユーザー(現在はどちらが忘れているのかわかりません)、デフォルトではユーザーはSQL Serverのデータベースにアクセスできません。

a)アプリケーションプール内のユーザーをSQL Serverのデータベースに対する権限を持つユーザーに変更します(適切な方法を知りたい場合は、明示的に定義する必要があります)ユーザー) b)は、適切なシステムに適切な権限がデータベース

(両方のケースでは、あなたが管理Studioまたは同等のものを使用してSQL Serverにユーザーを追加する必要があるとしていることに注意してください)

+0

私はそのアプリケーションプールの接続文字列を変更する必要があると思うのですが、web.config上に表示されていますよね?実際は '':どうすれば変更できますか? – markzzz

+0

解決済みのLocalSystemを、このhttp://stackoverflow.comに続いて、アプリケーションプールの詳細オプションで変更しました。/questions/7698286/login-for-user-iis-apppool-asp-net-v4-0 – markzzz

+0

あなたはどう思いますか?私はラッキーでしたか? – markzzz