在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应用程序打开,该应用程序将通过公司凭据连接您