3

我正在使用 Sitefinity 作为 Visual Studio 2012 中的解决方案。我在 64 位机器上。我刚刚安装了 Windows Identity Manager,因为在此之前我遇到了另一个错误,这与没有安装它有关。现在我收到此错误:

解码时发现无效数据。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.IO.InvalidDataException:解码时发现无效数据。

源错误:

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

堆栈跟踪:

[InvalidDataException: Found invalid data while decoding.]
   System.IO.Compression.Inflater.DecodeDynamicBlockHeader() +6621162
   System.IO.Compression.Inflater.Decode() +408
   System.IO.Compression.Inflater.Inflate(Byte[] bytes, Int32 offset, Int32 length) +150
   System.IO.Compression.DeflateStream.Read(Byte[] array, Int32 offset, Int32 count) +64
   Microsoft.IdentityModel.Web.DeflateCookieTransform.Decode(Byte[] encoded) +396
   Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(Byte[] cookie,     Boolean outbound) +217
   Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(XmlReader reader,     SecurityTokenResolver tokenResolver) +1958
   Telerik.Sitefinity.Security.Claims.SitefinitySessionTokenHandler.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver) +44
   Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(Byte[] token, SecurityTokenResolver tokenResolver) +149
   Telerik.Sitefinity.Security.Claims.SitefinitySessionAuthenticationModule.ReadToken(Byte[] sessionCookie) +520
   Telerik.Sitefinity.Security.Claims.SitefinitySessionAuthenticationModule.TryReadFromCookie(SessionSecurityToken& sessionToken) +111
   Telerik.Sitefinity.Security.Claims.SitefinitySessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs) +95
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

在这篇文章之前和之后,我也遵循了建议,但它对我不起作用: http ://www.sitefinity.com/developer-network/knowledge-base/getting-type-is-not-resolved-for-member- microsoft-identitymodel-claims-claimsprincipal-exception

这就是导致我安装 Microsoft 身份管理器的原因。我不确定如何解决这个问题。

4

1 回答 1

0

DeflateStreamMicrosoft在 .Net 4.5 之前的实施中存在错误。

看这里:

.NET [4 和以前的] 用户在任何情况下都不应使用 Microsoft 提供的 GZipStream 或 DeflateStream 类,除非 Microsoft 将它们完全替换为有效的东西。

Microsoft 从未为 4.5 之前的 .NET 框架版本修复此错误

至于 Firefox 和 IE 之间的区别——它们在使用 gzip 压缩时可能与 IIS 进行不同的交互,如果您查看原始 HTTP 请求和响应,Fiddler 可能会告诉您更多关于您的情况的差异。检查浏览器之间的请求序列是否相同。我的直觉是 Firefox 正在回退到无压缩状态,而 IE 没有,但如果没有测试平台,我将无法提供进一步的帮助。


您可以按绝望的递增顺序尝试这三种解决方案:

  1. 查看是否可以将 IIS 中的应用程序池更改为 SiteFinity 应用程序和 Visual Studio 中的 .NET 框架目标,以将其 GZIP DeflateStream 方法修复为目标 .NET 4.5。

  2. 尝试在 IIS中为此应用程序禁用 GZIP 压缩。按照此处反向的说明进行操作。我会最后尝试这个,因为您的服务器和所有用户都会受到带宽损失,从而影响用户体验。

  3. 安装DotNetZip Library,并覆盖 Microsoft 的实现System.IO.Compression.DeflateStream以调用没有相同错误的兼容方法。

于 2013-07-25T22:27:55.700 回答