-1

アプリケーションに 2 つの RAZOR Index フォームがあります。1 フォームは、1 つのデータベース「LocalDB」にレコードを作成し、別のデータベース「Core DB」で同じレコードを更新します。別のフォームは、「CoreDB」から「LocalDB」にレコードを同期します。「CoreDB」にレコードを作成する他のアプリケーションがあるため、これを行う必要があります。私のローカル データベースでは、監査証跡を 4 列で保持しています。CreateAt、CreatedBy、ModifiedAt、ModifiedBy。これらの列は、誰がいつレコードを作成/変更したかに関する情報を提供します。

現在のユーザーをWebアプリケーションにログインさせる静的関数を持つ単純な静的クラスがあります。

currentUser = HttpContext.Current.User.Identity.Name;     

これは、レコードを作成する Form 1 を使用するときに機能します。COREDB から LocalDB にレコードを同期しようとする Form 2 を使用すると、この同じ行で null 例外がスローされます。

なぜこれが起こっているのかアドバイスをお願いできますか?

ありがとう!

4

2 に答える 2

2

HttpContext.Current != null && HttpContext.Current.User.Identity != null && HttpContext.Current.User.Identity.IsAuthenticated見る前にチェックHttpContext.Current.User.Identity.Name

于 2012-05-29T19:43:48.687 に答える
0

あなたの質問では、この行を含むメソッドをどこでどのように呼び出しているかを説明していません。いくつかのデータベースを同期することについて話しました。HttpContext.Currentバックグラウンドスレッドには HttpContext がないため、明らかに不可能なバックグラウンドスレッド内で使用しようとしていると思われます。

そうでない場合は、ユーザー名にアクセスする前に、ユーザーが認証されていることを確認してください。

string currentUser = "";
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
    currentUser = HttpContext.Current.User.Identity.Name;
}
于 2012-05-30T06:13:17.423 に答える