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 の回答で説明されている回避策は問題なく機能します。