DataContext.Executequery 登录失败

DataContext.Executequery login failed

我使用 Linq 来 sql 并有以下语句:

 myDataContext ctx = new myDataContext();
  string query = "select * from myTable";
  var mycollection = ctx.ExecuteQuery<t_entity>(query).ToList();

此代码适用于我的域用户,但不适用于权限较低的 IIS 应用程序池用户 运行。重要的是要注意,这是一个庞大的系统,对数据库有数千次调用,并且从未观察到类似的问题。

任何意见将不胜感激。

祝一切顺利 B

你的连接字符串是什么?我想它使用 Integrated Security,所以它会尝试使用您当前的 windows 帐户进行数据库连接。但在 IIS 的情况下 - 它将使用不同的用户 - IIS 应用程序池用户。解决这个问题的典型方法有以下三种:

  1. 创建特定的 SQL 用户和密码,然后在连接字符串中指定。所以它将使用纯 SQL 凭据而不是 Windows 帐户
  2. 允许 IIS 应用程序池 (IIS APPPOOL\YourAppPoolName) 访问 SQL 服务器,方法是将其添加到 SQL 服务器的登录列表中,并允许访问特定的数据库。但在那种情况下,SQL 服务器和带有 IIS 的 Web 服务器都应该在同一个 Active Directory 域下,因为 SQL 服务器应该知道来自 WebServer 的本地应用程序池用户。
  3. 创建一个新的 windows 用户并将 IIS 配置为使用此 windows 用户代表该用户执行应用程序池。然后允许该用户访问 SQL 服务器。但是这个用户应该有最小的权限,因为它不太安全,因为你的网络应用程序将拥有该用户的权限并且它可能是一个安全整体