0

我有以下代码

 SqlConnection conn = new SqlConnection("user id=clearpath\\user;" +
                                                            "password=Password1;server=sqldatamart;" +
                                                            "Trusted_Connection=yes;" +
                                                            "database=LENDER_LOAN_SERVICE;" +
                                                            "connection timeout=30");


    SqlCommand cmd = new SqlCommand("INSERT INTO [LENDER_LOAN_SERVICE].[CMC].[Turn_Times] values('"+dateadded+"','"+username+"','"+prevtime+"','"+type+"','"+newturntime+"')",conn);

    conn.Open();

当我进行本地开发时,效果很好。但是,当我将网站放在计算机上的 IIS 6 上时,出现以下错误。

    Login failed for user 'CLEARPATH\IT-CARLOSDELL$'. 

    Line 42:             SqlCommand cmd = new SqlCommand("CMC.sp_NewDocMod", conn);
Line 43: 
Line 44:             conn.Open();
Line 45: 
Line 46:             SqlDataReader reader = cmd.ExecuteReader();

第 44 行出现错误。

似乎它将连接字符串从 clearpath\cpereyra 更改为 clearpath\IT-CARLOSDELL$

我的电脑名称是 IT-CARLOSDELL

有想法该怎么解决这个吗?

谢谢

4

3 回答 3

1

您需要执行以下操作之一:

  1. 在 SQL 中为 CLEARPATH\IT-CARLOSDELL$ 帐户授予权限
  2. 将应用程序池上的身份更改为具有数据库权限的身份(可能是 clearpath\cpereyra)
  3. 在您的站点上设置身份验证以模拟连接到该站点并在 SQL DB 中具有权限的用户。
  4. Trusted_Connection=yes从您的连接字符串中删除。

您选择哪一种取决于您用来保护网站的方法。

顺便说一句:它不会更改连接字符串。它正在使用该帐户,因为您有 Trusted_Connection=yes。它正在使用运行 ASP.NET 工作进程的帐户来尝试连接到数据库。

于 2013-01-03T23:42:13.123 回答
1

听起来您的应用程序池正在使用 'LocalSystem' 作为池标识

于 2013-01-03T23:42:18.240 回答
0

Trusted_Connection=yes从连接字符串中删除。现在,该字符串给出了一个特定的用户名和密码,并表示使用传递 Windows 身份验证。在本地运行时,您的 Windows 帐户有权访问 SQL(我假设),但在 IIS 中,它很可能以匿名身份登录。

于 2013-01-03T23:49:11.207 回答