【发布时间】:2010-11-27 00:13:21
【问题描述】:
我有一个 ASP.NET v2.0 网站(不是 Web 应用程序),其中根目录是公共的,但“Admin”子目录需要身份验证。有关设置的所有内容都非常通用 - 我使用了根 web.config 中定义的连接字符串和标准的AspNetSqlMembershipProvider 提供程序,并且我使用的是 ASP.NET 登录控件。
Admin 目录中的 web.config 指定用户必须具有“Admin”角色。
我正在使用SQL Server 2008,我的连接字符串很好;每个根级页面都是数据驱动的,它们都可以正常工作。
提供者配置似乎不错。
当我登录时,登录控件的“OnLoggedIn”事件会触发。
该事件代码的最后一行将我重定向到我的Admin/Default.aspx 页面。我在“OnLoggedIn”中的断点显示一切都很好,直到重定向到我的管理目录...然后...
...然后我等待...等待...
然后我收到一条错误消息,告诉我它遇到了“SQLExpress database file auto-creation error”。
为什么突然尝试创建 SQL Server Express 文件?为什么突然忽略了我的连接字符串?
一个奇怪的线索:就在“OnLoggedIn”事件的最后一行之前,我输入了这个:
bool blnTest = User.IsInRole("Admin");
我想看看blnTest = true.
发生的情况是该进程到达这条线……并等待……最终告诉我它无法访问 SQL Server Express 数据库。似乎任何用于确定用户角色的参考(无论是在我的代码中还是在幕后)都调用了错误的数据库。
编辑:啊,有时当我测试 blnTest 时它会等待。其他时候,它会立即将该值报告为“false”。
【问题讨论】:
-
RoleProvider 的连接字符串是什么?和你的 AuthenticationProvider 一样吗?
-
web.config 的那部分就是这样...
标签: asp.net sql-server-2008 sql-server-express provider