Asp.net 加密操作期间出错。net framework 4.5.1

Asp.net 加密操作期间出错。net framework 4.5.1,asp.net,asp.net-mvc-3,form-authentication,Asp.net,Asp.net Mvc 3,Form Authentication,我正在使用angularjs和Web API。为了对用户进行身份验证,我使用FormAuthenticationTicket(我只是使用用户数据创建票据,对其进行加密,然后返回到客户端)。 当客户端发送请求时,他会将此加密cookie添加到请求的头中 在远程服务器上,我解密票据,并验证该用户是否合法。 在localhost上,它可以完美地工作。 在服务器上,我有一个错误,在很短的时间后,用户无法识别。 经过多次调试后,我注意到有时当服务器尝试解密票据时,会出现异常:“加密操作期间出错” 我用谷歌

我正在使用angularjs和Web API。为了对用户进行身份验证,我使用FormAuthenticationTicket(我只是使用用户数据创建票据,对其进行加密,然后返回到客户端)。 当客户端发送请求时,他会将此加密cookie添加到请求的头中

在远程服务器上,我解密票据,并验证该用户是否合法。 在localhost上,它可以完美地工作。 在服务器上,我有一个错误,在很短的时间后,用户无法识别。 经过多次调试后,我注意到有时当服务器尝试解密票据时,会出现异常:“加密操作期间出错”

我用谷歌搜索了这个错误,据我所知,这个错误是因为服务器试图用另一个机器密钥解密票据

我想在web.config中设置machine key可能会解决这个问题,但我找到的所有文章都在谈论早期的.net framework版本(我使用的是4.5.1)

这是我得到错误的时候:

FormsAuthenticationTicket fat = FormsAuthentication.Decrypt(enc_ticket);
这是我的web.config:

     <configuration><appSettings></appSettings>

      <system.web> <compilation debug="true" targetFramework="4.5.1">
      <assemblies>
        <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5.1" />
    <customErrors mode="Off"/>
    <trust level="Full" />
  </system.web>
      <system.webServer>
        <handlers>
          <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
          <remove name="OPTIONSVerbHandler" />
          <remove name="TRACEVerbHandler" />
          <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
        </handlers>
      </system.webServer>
    </configuration>

经过多次研究,我就是这样解决这个问题的:


只需将machinekey值添加到web.config。此机器密钥将始终用于您托管网站的webfarm上的任何服务器。

经过多次研究,这就是我解决问题的方法:

只需将machinekey值添加到web.config。此机器密钥将始终在您托管网站的webfarm上的任何服务器上使用