LINQ to SQL仅在调试模式下工作?

时间:2012-04-01 15:02:51

标签: c# .net sql-server linq-to-sql iis

这是我的代码:

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 个答案:

答案 0 :(得分:3)

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

当您在调试模式下从Visual Studio运行应用程序时,连接到数据库的用户是登录到PC并运行Visual Studio的用户 - 奇怪的是该用户(您!)是管理员并拥有管理员权限SQL Server(我假设一个本地实例)。

当您通过IIS的本地安装运行应用程序时(可以合理地假设它是完整版本,而不是快递),然后,除非您更改应用程序的应用程序池,否则它将作为本地系统用户运行(现在我忘了哪一个,你可以去查看app池看看),默认情况下用户将无法访问SQL Server中的数据库。

要解决此问题,您需要执行以下两项操作之一: a)将应用程序池中的用户更改为对SQL Server中的数据库具有权限的用户(如果您需要良好实践,则应定义显式用户) b)授予相应系统帐户适当的权限以访问数据库

(请注意,在这两种情况下,您都需要使用Management Studio或同等版本将用户添加到SQL Server)

答案 1 :(得分:1)

验证http://localhost:8080/上的登录名。可能this article会帮助你。