我在 Application_Start 的某个时候有以下代码
MembershipUserCollection users = Membership.GetAllUsers();
foreach (MembershipUser u in users)
{
ProfileBase profile = ProfileBase.Create(u.UserName, false);
if (profile["Index"] != null)
{
// Some code
}
}
问题是,当我尝试访问配置文件属性时,我得到“请求在此上下文中不可用”httpException。我试过使用 profile.GetPropertyValue 但也没有运气。
为什么配置文件需要请求对象,我怎样才能让它工作?
编辑:
我查看了 .NET 代码,发现在某些时候SqlProfileProvider.GetPropertyValuesFromDatabase(string userName, SettingsPropertyValueCollection svc)
被调用,其中包含以下代码字符串:
if (!current.Request.IsAuthenticated)
显然,如果不在请求上下文中,这将永远不会起作用。Onur 的答案中描述的解决方法可以正常工作。