在 Windows XP 中解析 IIS 中的"Login failed for user . The user is not associated with a trusted SQL Server



在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的第一个问题中回答的问题类型相同。在Windows7中,通常会将应用程序池设置为使用LOCAL MACHINE或NETWORK SERVICE运行(如果选择不使用SQL Server身份验证)。只是我不知道在哪里可以更改IIS 6中应用程序池的用户。

访问"时出现用户权限错误;用户实例";来自ASP.NET 的数据库

我读过这篇文章,但这适用于Windows7中的IIS,而不是WindowsXP。如何在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

在MSDN中找到了答案。

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

如果将来URL发生更改,我将从上面的文档中粘贴下面的文本。如果使用Windows7,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登录权限(WindowsServer2003)。

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

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

  • 使用连接字符串可以使用SQL Server标准安全性。要执行此操作,必须使用明确的用户ID和密码配置连接字符串。

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

在ApplicationPools下右键单击站点使用的池。选择属性,然后转到"标识"选项卡。单击可配置单选按钮并键入凭据。如果你没有用户可以使用,那么转到我提供的链接,它将为你提供创建用户的步骤。

自定义身份

我在运行MVC应用程序时遇到了同样的问题。我从MVC应用程序连接远程机器上的实体数据库时出错,因为我是用窗口凭据登录的。

在使用下面的批处理脚本后,我通过远程机器凭据登录,这样问题就解决了,应用程序也成功地连接到了数据库。

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

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

相关内容

最新更新