2

在 Windows XP 中运行时,我在 IIS 中的 ASP.NET Web 应用程序中遇到以下错误。我在 Web 应用程序中使用 Windows 身份验证。我通常会使用 SQL Server 身份验证(混合模式),但我无权访问此数据库服务器,但读取权限除外。它们只允许可信连接(或集成安全=SSPI;),这意味着使用我们的 Windows 网络身份验证用户。

错误:

Login failed for user ''. The user is not associated with a trusted SQL Server connection.

.NET 代码:

SqlConnection conn = new SqlConnection(
    "server=server_name;" +
    "Integrated Security=SSPI;" +
    "database=db_name;" +
    "connection timeout=30;");
SqlDataReader rdr = null;
List<Ticket> list = new List<Ticket>();

try
{
    conn.Open();
    SqlCommand cmd = new SqlCommand("SELECT TOP 10 [HEATSeq],[AssignedBy] FROM [dbo].[Asgnmnt]", conn);
    rdr = cmd.ExecuteReader();
    while (rdr.Read())
    {
        Ticket record = new Ticket();

        record.ticket_id = rdr[0].ToString();
        record.assigned_by = rdr[1].ToString();
    }
}
catch (Exception e)
{
    string x = "";
}
finally
{
    if (rdr != null)
    {
        rdr.Close();
    }
    if (conn != null)
    {
        conn.Close();
    }
}

这与我在 Jon Skeet 的第一个问题中回答的问题类型相同。在 Windows 7 中,您通常会将应用程序池设置为使用 LOCAL MACHINE 或 NETWORK SERVICE(如果您选择不使用 SQL Server 身份验证)运行。除了我不知道在哪里更改 IIS 6 中应用程序池的用户。

从 ASP.NET 访问“用户实例”数据库时出现用户权限错误

我阅读了这篇文章,但这适用于 Windows 7 中的 IIS,而不是 Windows XP。如何在 Windows XP 中解决此问题。请注意,当我在控制台应用程序中运行此代码时,它连接良好。

http://blogs.msdn.com/b/sql_protocols/archive/2008/05/03/understanding-the-error-message-login-failed-for-user-the-user-is-not-associated-with- a-trusted-sql-server-connection.aspx

4

3 回答 3

1

在 MSDN 中找到了答案。

http://msdn.microsoft.com/en-us/library/ab4e6cky(v=vs.80).aspx

如果 URL 将来发生变化,我将从上面的文档中粘贴下面的文本。如果处理 Windows 7,Fickle 的答案是正确的。根据我的阅读,您必须在运行 SQL Server 的远程计算机上授予计算机计算机(在 Windows XP 中运行 IIS)的权限。我发现只要求 SQL Server 的 DBA 创建一个帐户让我通过 SQL Server 身份验证登录会更容易。

======================

此错误可能有多种形式,包括:

用户“(null)”登录失败

用户域\用户名登录失败

用户计算机\ASPNET 登录失败

可能的原因是您正在使用 Web 应用程序并试图访问运行 Microsoft SQL Server 的计算机。引发的特定错误或异常取决于 Web 服务器是否也在运行 SQL Server。出现此问题的原因是 Web 应用程序未将有效凭据传递给 SQL Server。通常,您可以通过执行以下操作之一来解决此问题:

  • 如果 Web 服务器也运行 SQL Server,则授予本地 ASPNET 用户登录权限(Windows 2000 和 Windows XP)或授予服务器上的 NT AUTHORITY\NETWORK SERVICE 登录权限(Windows Server 2003)。

  • 如果 SQL Server 正在远程计算机上运行并且 Web 服务器正在运行 IIS 6.0,请授予 Web 服务器的计算机帐户在远程计算机上的登录权限。机器帐户引用为 DOMAIN\MACHINENAME$。

  • 将 ASP.NET 设置为作为在运行 SQL Server 的计算机上具有登录权限的 Windows 域用户运行。

  • 使用连接字符串来使用 SQL Server 标准安全性。为此,您必须使用明确的用户 ID 和密码配置连接字符串。

有关详细信息,请参阅从 Web 应用程序访问 SQL Server。

于 2012-09-14T20:29:11.837 回答
0

在 ApplicationPools 下,右键单击您的站点使用的池。选择属性,然后转到“身份”选项卡。单击可配置的单选按钮并输入凭据。如果您没有要使用的用户,请转到我提供的链接,它将为您提供创建用户的步骤。

自定义身份

于 2012-09-11T03:41:21.870 回答
0

我在运行我的 MVC 应用程序时遇到了同样的问题。当我通过我的窗口凭据登录时,从 MVC 应用程序连接远程计算机上的实体数据库时出现错误。

使用下面的批处理脚本后,我通过远程机器凭据登录,以便问题解决并且应用程序成功连接到数据库。

runas /user:corp\username /netonly "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

请将用户名替换为您的公司用户名。它将提示您命令提示符,输入您的密码(密码将不可见)。这样新实例将为 .net 应用程序打开,该应用程序将通过 corp 凭据连接您

于 2016-05-17T06:58:12.483 回答