我有一个存储在一台服务器上的C#ASPX网站,它在同一个域中调用来自SQL服务器的大量结果。在我的SQL数据库中,有两个用户具有相同的权限:
我的网站存储在本地服务器上的IIS目录中。在我的web.config文件中,我有身份模拟和连接字符串,如下所示:
<identity impersonate="true" userName="admin" password="admin" />
<add name="ConnectionString" connectionString="Data Source='server';Initial Catalog='database';Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
为什么当我对“NTADMIN \ me”凭据进行硬编码而不对SQL数据库的管理员“凭据”进行硬编码时,这是否有用? “admin”用户是否也需要拥有域名凭据?如果我可以使用它们登录数据库,我认为这不是必要的。
我收到的错误如下(uid + pwd正常登录数据库):
无法从配置文件中指定的凭据创建Windows用户令牌。操作系统登录失败时出错:未知用户名或密码错误。
答案 0 :(得分:2)
在这种情况下,您无法模拟SQL用户。这里有两种用户类型,一个是sql用户,一个是windows用户。身份模拟标记只适用于Windows用户帐户。
Windows会尝试将此用户记录下来,但它对此一无所知,因此密码失败。
答案 1 :(得分:1)
问题在于权限。试一试。
使用相同的用户名和密码在数据库服务器和Web服务器上添加本地Windows用户帐户,然后将用户作为Windows登录名添加到sql server并分配登录相应的权限
make connection string Integrated Security = true。
添加到web.config。启用匿名访问,并禁用IIS安全设置下的所有其他安全选项。