9

2 つの異なるサーバーにデプロイされた asp.net 4.0 に基づく Web フォーム アプリケーションがあります。Web フォーム アプリケーションには、コード ビハインドを含む Default.aspx が 1 つだけあります。

protected void Page_Load(object sender, EventArgs e)
{
    MachineKeySection section =
     (MachineKeySection)ConfigurationManager.GetSection("system.web/machineKey");

    this.Response.Write(section.DecryptionKey);
    this.Response.Write("<br />");

    this.Response.Write(section.ValidationKey);
    this.Response.Write("<br />");

    var authToken = "xxxxxx";  
        //the real token is obviously not xxx, just an example here

    this.Response.Write(authToken);
    this.Response.Write("<br />");

    var ticket = FormsAuthentication.Decrypt(authToken);
    if (ticket != null) this.Response.Write(ticket.Name);
    this.Response.End();
}

同じ web.config を持つ同じコードが 2 つの Web サーバーにデプロイされます。ただし、そのうちの 1 つは問題なく動作し、もう 1 つは常にticketnull に等しくなります。削除するif (ticket != null)と、null 参照例外がスローされます。チケットの部分を除いて、出力はまったく同じです。

Web サーバーは、.NET Framework 4 がインストールされた Windows Server 2008 R2 SP1 で実行されています。2 つの Web サーバーのコードは、machineKey を含めて完全に同じであると確信しています。

<machineKey validationKey="xxx" decryptionKey="yyy" validation="SHA1" decryption="AES" />

これはどのように起こりますか?この奇妙な問題について何か考えがありますか?

アップデート

MS バグ、パッケージを更新する必要があります: http://support.microsoft.com/kb/2656351

4

1 に答える 1

1

ロードバランサーを使用しているときに、あなたが言及したように、まさにこの問題に遭遇しました。[ .net フレームワーク 4.0 ]

すべてが何度も検証されていましたが、成功しませんでした。

最終的にセキュリティ更新プログラムとして以下のリンクを共有したかっただけです:私の場合、 MS11-100は問題を修正しました。

Tony は、これが .net 4.0 http://tmoaikel.wordpress.com/2012/03/21/formsauthentication-decrypt-returns-null/のバグである可能性が高いと考えており、上記のパッチで修正されています。

これは、あなたが少し前進するのに役立つかもしれません。

于 2013-08-11T14:34:54.877 に答える