2012-04-01 41 views
0

這是我的代碼:LINQ to SQL只能在調試模式下工作?

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

,如果我打開這個播放起始到Visual Studio,它打開http://localhost:51180/Website1/和我從數據庫獲取的值。

但是,如果我打開與http://localhost:8080/(通常我這個開)的網站,我得到:

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

用戶登錄失敗 'IIS APPPOOL \ WEBSITE1'。

我該如何設置? IIS問題?

+2

該消息告訴你確切的原因。你讀過它嗎? – usr 2012-04-01 15:06:34

+0

但爲什麼它在調試模式下工作?這意味着登錄不會失敗....也因爲我可以從Visual Studio管理數據庫,使用LINQ to SQL類... – markzzz 2012-04-01 15:08:24

+0

http://msdn.microsoft.com/en-us/library/aa266913(v= vs.60).aspx – 2012-04-01 15:16:46

回答

3

正如@usr指出的答案在你面前。

當您以調試模式運行應用程序時,Visual Studio連接到數據庫的用戶是登錄到PC並運行Visual Studio的用戶 - 奇怪的是,此用戶(您!)是管理員並具有管理員權限與SQL Server(我假設一個本地實例)。

當您通過IIS的本地安裝(可以合理假設是完整版本,而不是表達)運行應用程序時,除非您更改應用程序的應用程序池,否則它將作爲本地系統運行用戶(現在我忘記了哪一個,您可以查看應用程序池以查看),並且默認情況下該用戶將無法訪問SQL Server中的數據庫。

要解決此問題,您需要執行以下兩項操作之一: a)將應用程序池中的用戶更改爲對SQL Server中的數據庫具有權限的用戶(如果您想要良好實踐,則應該定義顯式用戶) b)授予相應的權限到相應的帳戶來訪問數據庫

(注意,在這兩種情況下,你將需要添加使用Management Studio或等效的用戶到SQL Server)

+0

我想我需要改變應用程序池連接字符串,我在web.config上看到它,對嗎?實際是'':我該如何改變它? – markzzz 2012-04-01 15:51:28

+0

已解決,更改應用程序池上的高級選項中的LocalSystem,繼此http://stackoverflow.com/questions/7698286/login-failed-for-user-iis-apppool-asp-net-v4-0 – markzzz 2012-04-01 16:01:13

+0

你怎麼看?我很幸運?:) – markzzz 2012-04-01 16:01:54

相關問題