title: FormsAuthentication.Decrypt always returns null in one of the web servers
body: <p>I have a webform application based on asp.net 4.0, deployed to two different servers. The webform application has only one Default.aspx with its code behind:</p>
  
  <pre><code>protected void Page_Load(object sender, EventArgs e)
  {
      MachineKeySection section =
       (MachineKeySection)ConfigurationManager.GetSection("system.web/machineKey");
  
      this.Response.Write(section.DecryptionKey);
      this.Response.Write("&lt;br /&gt;");
  
      this.Response.Write(section.ValidationKey);
      this.Response.Write("&lt;br /&gt;");
  
      var authToken = "xxxxxx";  
          //the real token is obviously not xxx, just an example here
  
      this.Response.Write(authToken);
      this.Response.Write("&lt;br /&gt;");
  
      var ticket = FormsAuthentication.Decrypt(authToken);
      if (ticket != null) this.Response.Write(ticket.Name);
      this.Response.End();
  }
  </code></pre>
  
  <p>the same code with the same web.config is deployed to two web servers. However, one of them works fine, and another always has its <code>ticket</code> equals to null. If I remove <code>if (ticket != null)</code> then an null reference exception is thrown. They have totally the same output, except the ticket part.</p>
  
  <p>The web servers are running on Windows Server 2008 R2 SP1, with .NET framework 4 installed. I'm sure the code on the two web servers are toally the same, including the machineKey:</p>
  
  <pre><code>&lt;machineKey validationKey="xxx" decryptionKey="yyy" validation="SHA1" decryption="AES" /&gt;
  </code></pre>
  
  <p>How can this happen? Do you have any idea about this weired issue?</p>
  
  <p><strong>UPDATE</strong> </p>
  
  <p>MS BUG, need to update package: <a href="http://support.microsoft.com/kb/2656351" rel="nofollow">http://support.microsoft.com/kb/2656351</a></p>