这是我的代码:
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问题?
答案 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会帮助你。