ASP.NET MVC 4 windows身份验证在更改ConnectionString时不起作用,尽管两者具有相同的用

本文关键字:不起作用 windows MVC NET 身份验证 ConnectionString ASP | 更新日期: 2024-05-04 14:09:53

在我们的ASP.NET MVC 4应用程序中,我们对InternetAt网站使用Windows身份验证。该应用程序有一个管理页面,用户可以在其中搜索active directory中的域用户,并为用户分配角色。角色是自定义角色,而不是Windows组(客户端不希望仅为此应用创建Windows组)。在将应用程序从开发服务器部署到生产之前,我使用代码ProductionDomain''myProductionWinLogin创建了一个用户(我也在生产服务器域中)。部署后,我为生产中管理应用程序的用户创建了一个管理用户(Windows登录)。

开发服务器在我们的公司域上,生产服务器在我们客户的公司域中。

当我们将数据库从公司服务器部署到客户服务器(生产)时,我从公司域的windows登录也迁移到了生产服务器。

我们可以将生产数据库的副本复制到我们公司的服务器上,用于测试/修复目的。请注意,测试服务器和生产服务器的数据库登录名和密码完全相同,我们已经测试过,当我们通过SQL server Management Studio直接登录到数据库时,相同的登录名/密码在测试服务器上有效。

但是,当我们将数据库复制到服务器并通过将生产服务器名称更改为测试服务器来更改web.config中的连接字符串时,应用程序会出现以下错误:"未经授权的访问"。

另一方面,如果我们将服务器名称更改为应用程序最初开发的开发服务器,并且我们拥有具有相同SQL登录名/密码的旧数据库,那么应用程序就会开始工作。以下是web.config中的连接字符串(出于隐私考虑,使用虚构的名称。连接字符串与生产、开发和测试服务器完全相同,当然服务器名称除外):

<add connectionString="Server=ProdServer;Database=myDb;User ID=aUserID;Password=aUSerPassword" name="AonnectionString" providerName="System.Data.SqlClient" />

我已经验证了在所有三台服务器上,aspnet_Roles表具有完全相同的角色,并且我的windows登录名(来自我的公司域)也在这三台服务器的aspnet_Users表中。

有人能解释一下为什么应用程序在开发服务器上工作,但在测试服务器上不工作,解决方案是什么吗?

谢谢。。Nam

ASP.NET MVC 4 windows身份验证在更改ConnectionString时不起作用,尽管两者具有相同的用

检查sql server登录是否正确配置!