【发布时间】:2012-06-12 18:57:00
【问题描述】:
我的 SQL 连接字符串没有使用连接字符串中提供的身份验证时遇到问题。我使用自跟踪实体编写了一个 ASP.NET 应用程序,我需要访问来自两个不同服务器的数据。第一个服务器 SQLSERVER1 正在使用 Windows 身份验证,并且在域上,我能够很好地提取我的数据。然而,第二个服务器连接位于域外的另一个盒子上,我需要使用特定的登录名和密码来访问数据。我确认我在连接字符串中使用的凭据可以很好地连接到服务器。
在我的网络服务器设置中,我在 IIS7 中使用自己的凭据“Domain\AppPoolUser”运行我的应用程序池。
出于某种原因,每当我在发布到网络服务器后尝试从 SQLSERVER2 调用数据时,我都会收到以下错误,即使我已经在连接字符串中指定了凭据并且它们是有效的。但是,如果我在本地调试应用程序,则连接工作正常:用户 'DOMAIN\AppPoolUser' 登录失败。
它似乎没有使用我在连接字符串中指定的凭据,而是尝试作为应用程序池凭据进行连接。如何设置连接字符串以使用我提供的凭据? 这是我的连接字符串:
<add name="ADATrackingContext" providerName="System.Data.SqlClient" connectionString="Server=SQLSERVER1;Database=ADATracking;Integrated Security=True;" />
<add name="PatientContext" providerName="System.Data.SqlClient" connectionString="Server=SQLSERVER2;Database=Patients;uid=PatientUser;password=123456;Integrated Security=False;" />
【问题讨论】:
-
错误来自哪个上下文?如果是 ADATrackingContext,那么这是可以理解的,因为您在该连接上使用了集成安全性。
-
ADATrackingContext 与窗口身份验证一起正常工作。错误来自 PatientContext。
-
对不起,我应该在我原来的问题中更清楚。问题连接字符串是 PatientContext。
-
PatientContext 类是在哪里创建的?在 ASP.Net 网站/Web 应用程序中还是在 ASP.NET 站点引用的类库中?如果它在类库中,它可能使用了在设计时创建的类库中的连接字符串。在开发环境中调试时,您是否为 PatientContext 使用集成安全性?
标签: asp.net sql entity-framework linq-to-sql connection-string