ACS azure用于已发布的应用程序

时间:2013-06-08 21:33:07

标签: azure visual-studio-2012 acs

嗨伙计们, 我使用VS 2012开发了一个WebForms应用程序。我已经在Azure上发布了它。 之后我集成了ACS(我已经将URL设置为我已经发布的应用程序) 我再次发布了该应用程序,但它不起作用。 在我注册之后(以前使用Yahoo或LiveID)我遇到了这个错误:

应用程序中的服务器错误。

数据保护操作失败。这可能是由于没有为当前线程的用户上下文加载用户配置文件引起的,这可能是线程模拟时的情况。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Security.Cryptography.CryptographicException:数据保护操作失败。这可能是由于没有为当前线程的用户上下文加载用户配置文件引起的,这可能是线程模拟时的情况。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

堆栈追踪:

[CryptographicException:数据保护操作失败。这可能是由于没有为当前线程的用户上下文加载用户配置文件引起的,这可能是线程模拟时的情况。    System.Security.Cryptography.ProtectedData.Protect(Byte [] userData,Byte [] optionalEntropy,DataProtectionScope scope)+379    System.IdentityModel.ProtectedDataCookieTransform.Encode(Byte [] value)+52

[InvalidOperationException:ID1074:尝试使用ProtectedData API加密cookie时发生CryptographicException(有关详细信息,请参阅内部异常)。如果您使用的是IIS 7.5,则可能是由于应用程序池上的loadUserProfile设置被设置为false。 ]    System.IdentityModel.ProtectedDataCookieTransform.Encode(Byte [] value)+167    System.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(Byte [] cookie,Boolean outbound)+57    System.IdentityModel.Tokens.SessionSecurityTokenHandler.WriteToken(XmlWriter writer,SecurityToken令牌)+658    System.IdentityModel.Tokens.SessionSecurityTokenHandler.WriteToken(SessionSecurityToken sessionToken)+86    System.IdentityModel.Services.SessionAuthenticationModule.WriteSessionTokenToCookie(SessionSecurityToken sessionToken)+144    System.IdentityModel.Services.SessionAuthenticationModule.AuthenticateSessionSecurityToken(SessionSecurityToken sessionToken,Boolean writeCookie)+82    System.IdentityModel.Services.WSFederationAuthenticationModule.SetPrincipalAndWriteSessionToken(SessionSecurityToken sessionToken,Boolean isSession)+216    System.IdentityModel.Services.WSFederationAuthenticationModule.SignInWithResponseMessage(HttpRequestBase request)+860    System.IdentityModel.Services.WSFederationAuthenticationModule.OnAuthenticateRequest(Object sender,EventArgs args)+369    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+136    System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+69

我该怎么办? 我已正确设置了URL。我在web.config中没有任何“localhost”的记录。 我不知道为了这项工作我必须另外设置什么..

2 个答案:

答案 0 :(得分:0)

默认情况下,WIF使用DPAPI加密Cookie。切换到基于证书的加密。看到这个答案:

Is it possible to run WIF without LoadUserProfile = True

答案 1 :(得分:0)

Vittorio Bertocci在这里回答了这个问题 http://www.cloudidentity.com/blog/2013/01/28/running-wif-based-apps-in-windows-azure-web-sites-4/

云网络应用程序中没有DPAPI,4.5有一个简单的解决方案