2

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

4

2 に答える 2

1

どうやら、あなたの場合は不可能なリクエストオブジェクトにアクセスしようとしています。

次のリンクを参照して、可能であればいずれかの回避策を適用してください。 http://mvolo.com/iis7-integrated-mode-request-is-not-available-in-this-context-exception-in-applicationstart

何を達成しようとしているのか、より多くの情報を提供していただければ、別の方法を見つけることができます。

于 2012-07-17T11:27:26.010 に答える