一个基于asp和C#的网站,已经上线,为什么我人工向数据库中user的表格中增加用户,网站就不认呢?
数据库是MS sql server 2008R2, 现在客户需要增加两个管理员账户,我也在数据库的user的表格中根据以前管理员账户的格式信息手工添加了两个账户信息。但从网站登录后,登录页面转向一个非常简单的页面(这个页面是guest用户的登录页面),而不是转向管理员的页面?总之,网站似乎不认识这个账户,为什么呢?
是不是修改数据库还要重新编译呢?还是什么其他原因呢?
------解决方案--------------------要么你程序写的有漏洞,要么看看是否有缓存机制,将之前的数据做了缓存,并没有获取最新数据
------解决方案--------------------很有可能你的程序不是简单的就读了user那一张表,是否还有权限(绑定菜单功能之类的)。然后程序中加载时(sql关联查询),并没有查到这个用户(sql关联查询时过滤了你添加的这个账号)。
------解决方案--------------------从你截的图上的代码来看,用的是Entity Framework(EF)操作数据库的,是微软C#的ORM(类似于java中的hibernate)。你可以把光标放到MOREntities上面,按F12定位到MOREntities的定义部分。
http://blog.csdn.net/chinacsharper/article/details/9368855
------解决方案--------------------可以单步调试下了。。。
------解决方案--------------------同意楼上的观点,你在Login的方法主体内调试下,或者查询下所有的User,也可以Console到输出窗口,首先看看数据是否存在,其次看看你添加的数据和其他正常的数据有什么不一样的地方
------解决方案--------------------看一下user表里的是否有IsAdmin及对应的值。
------解决方案--------------------一个帐号和密码,你竟然得到了两个人的信息,说明你的帐号和密码信息重复了,如果你使用First得到的第一条数据估计就是那个IsAdmin为false的那条数据
------解决方案--------------------????????///?<summary>
????????///?No?Metadata?Documentation?available.
????????///?</summary>
????????[EdmScalarPropertyAttribute(EntityKeyProperty=false,?IsNullable=false)]
????????[DataMemberAttribute()]
????????public?global::System.Boolean?IsAdmin
????????{
????????????get
????????????{
????????????????return?_IsAdmin;
????????????}
????????????set
????????????{
????????????????OnIsAdminChanging(value);
????????????????ReportPropertyChanging("IsAdmin");
????????????????_IsAdmin?=?StructuralObject.SetValidValue(value);
????????????????ReportPropertyChanged("IsAdmin");
????????????????OnIsAdminChanged();
????????????}
????????}
????????private?global::System.Boolean?_IsAdmin;
????????partial?void?OnIsAdminChanging(global::System.Boolean?value);
????????partial?void?OnIsAdminChanged();
你应该也注意到这段了吧!关键方法就是StructuralObject.SetValidValue,研究一下吧!