2012-07-17 31 views
2
获取配置文件数据

我必须在某个点的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的答案中描述的解决方法可以正常工作。

回答

1

显然你正试图访问请求对象,这是不可能在你的情况。

请查看以下链接,并在可能的情况下应用其中一种解决方法。 http://mvolo.com/iis7-integrated-mode-request-is-not-available-in-this-context-exception-in-applicationstart

如果您提供更多信息,您尝试实现什么,我们可以找到另一种方法。

+0

我已经阅读过有关集成模式的内容。这个问题似乎出现在BaseProfile中,它尝试访问属性访问中的请求对象。我尝试在应用程序启动时聚合所有配置文件的索引属性。但在我在这篇文章中做出解决方法之前,我想确定我不会错过任何东西。 – aikixd 2012-07-17 11:31:35

+0

为什么你这个请求对象特别在这种情况下?如果你不需要它做一个空控制(或尝试阻止)并继续你的过程。 – 2012-07-17 11:42:39

+0

我不使用Request对象,我需要从配置文件中获取属性值,当我尝试时会引发异常。 – aikixd 2012-07-17 11:48:53

相关问题