C#.NET - Membership.ValidateUser在web中返回false;视觉工作室是真的

时间:2009-07-27 20:52:35

标签: c# .net asp.net

在visual studio中运行Web时,以下行返回true。

if (Membership.ValidateUser(Login1.UserName, Login1.Password))

但是,当我通过网络访问相同代码时,它会返回false。

相同的数据库,同一台计算机,同一个Web文件夹,唯一的区别是,当我在visual studio中运行调试时,它可以工作,当我尝试通过Web访问它时,它会失败。

由于

3 个答案:

答案 0 :(得分:3)

当您处于调试模式时,您处于以。

登录的用户的安全上下文中

当您通过Web访问时,您可能位于同一用户或IIS匿名用户的上下文或应用程序池的标识中,具体取决于您的配置。

如果将IIS和web.config配置为使用Windows身份验证和impersonate = true,则应该得到相同的结果。

答案 1 :(得分:1)

您的网站工作进程是否有权连接到数据库(或AD)?也许,用于工作进程的凭据无法连接,因此查找失败。将连接字符串设置为使用集成身份验证时,通常会出现这种情况。当您在Cassini或单元测试中运行时,它将使用登录用户的凭据,该用户通常拥有比工作进程更多的权限。

答案 2 :(得分:1)

如果您使用的是SQL Express,请确保数据库所在的文件夹具有IIS工作进程用户要修改的权限。在Windows XP上,它通常是IIS_或ASPNET用户。在Windows 2003+上,这通常应该是NETWORK SERVICE组。