C# CryptographicException:加密操作期间发生错误:如何自动修复它?
这是my Global.ascx.cs,带有FormsAuthentication: 已经尝试了一些书面建议,但没有解决问题 我不在Azure上。我不想使用该解决方案删除cookie,al可以:不能强制用户删除cookie。系统必须自动完成这项工作 我在哪里能修好它?也许我错过了一些全局错误处理程序?C# CryptographicException:加密操作期间发生错误:如何自动修复它?,c#,.net,asp.net-mvc,forms-authentication,C#,.net,Asp.net Mvc,Forms Authentication,这是my Global.ascx.cs,带有FormsAuthentication: 已经尝试了一些书面建议,但没有解决问题 我不在Azure上。我不想使用该解决方案删除cookie,al可以:不能强制用户删除cookie。系统必须自动完成这项工作 我在哪里能修好它?也许我错过了一些全局错误处理程序? 似乎应用程序错误没有被调用,可能?处理不可加密的cookie的方式与处理任何cookie的方式相同 protected FormsAuthenticationTicket GetAuthTicke
似乎应用程序错误没有被调用,可能?处理不可加密的cookie的方式与处理任何cookie的方式相同
protected FormsAuthenticationTicket GetAuthTicket()
{
HttpCookie authCookie = Request.Cookies["CookieFA"];
if (authCookie == null) return null;
try
{
return FormsAuthentication.Decrypt(authCookie.Value);
}
catch(System.CryptographicException exception)
{
_errorLog.Write("Can't decrypt cookie! {0}", exception.Message);
return null;
}
}
protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
var authTicket = GetAuthTicket();
if (authTicket != null)
{
CustomPrincipal principal = new CustomPrincipal(authTicket.Name);
CustomPrincipalSerializeModel userSerializeModel = JsonConvert.DeserializeObject<CustomPrincipalSerializeModel>(authTicket.UserData);
principal.UserID = userSerializeModel.ID;
principal.FirstName = userSerializeModel.FirstName;
principal.LastName = userSerializeModel.LastName;
principal.Roles = userSerializeModel.RoleName.ToArray<string>();
HttpContext.Current.User = principal;
}
}
不用说,您还应该调查这些异常发生的原因,例如每个应用程序池回收。这似乎是可行的。我可以删除应用程序错误吗?
[CryptographicException: Error occurred during a cryptographic operation.]
System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors(Func`2 func, Byte[] input) +115
System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.Unprotect(Byte[] protectedData) +70
System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket) +9778338
GPMS.MvcApplication.Application_PostAuthenticateRequest(Object sender, EventArgs e) in C:\repos\GPMS\GPMS\Global.asax.cs:32
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +141
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +71
protected FormsAuthenticationTicket GetAuthTicket()
{
HttpCookie authCookie = Request.Cookies["CookieFA"];
if (authCookie == null) return null;
try
{
return FormsAuthentication.Decrypt(authCookie.Value);
}
catch(System.CryptographicException exception)
{
_errorLog.Write("Can't decrypt cookie! {0}", exception.Message);
return null;
}
}
protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
var authTicket = GetAuthTicket();
if (authTicket != null)
{
CustomPrincipal principal = new CustomPrincipal(authTicket.Name);
CustomPrincipalSerializeModel userSerializeModel = JsonConvert.DeserializeObject<CustomPrincipalSerializeModel>(authTicket.UserData);
principal.UserID = userSerializeModel.ID;
principal.FirstName = userSerializeModel.FirstName;
principal.LastName = userSerializeModel.LastName;
principal.Roles = userSerializeModel.RoleName.ToArray<string>();
HttpContext.Current.User = principal;
}
}