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 つは常にticket
null に等しくなります。削除する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