我必须在某个点的Application_Start下面的代码不能在的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的答案中描述的解决方法可以正常工作。
我已经阅读过有关集成模式的内容。这个问题似乎出现在BaseProfile中,它尝试访问属性访问中的请求对象。我尝试在应用程序启动时聚合所有配置文件的索引属性。但在我在这篇文章中做出解决方法之前,我想确定我不会错过任何东西。 – aikixd 2012-07-17 11:31:35
为什么你这个请求对象特别在这种情况下?如果你不需要它做一个空控制(或尝试阻止)并继续你的过程。 – 2012-07-17 11:42:39
我不使用Request对象,我需要从配置文件中获取属性值,当我尝试时会引发异常。 – aikixd 2012-07-17 11:48:53