在visual studio中运行Web时,以下行返回true。
if (Membership.ValidateUser(Login1.UserName, Login1.Password))
但是,当我通过网络访问相同代码时,它会返回false。
相同的数据库,同一台计算机,同一个Web文件夹,唯一的区别是,当我在visual studio中运行调试时,它可以工作,当我尝试通过Web访问它时,它会失败。
由于
答案 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组。