代码之家  ›  专栏  ›  技术社区  ›  thomasb DaveRead

页面在Firefox上显示随机符号而不是错误消息

  •  14
  • thomasb DaveRead  · 技术社区  · 14 年前

    随机地,在一些项目中,一些页面显示随机符号而不是错误消息。就像这个:

    I�%&/m�{J�J��t�� $@iG#)*eVe]f@ici{{;N'?\fdlJ!?~|?"Ey’)=y6hi-ez7iiL,4节ie | uz:} {['U | 6JlRb6Gk^,}<~<;cRé±iVm | yDltR |艾克 !zY)5GA8美元D·oI]P“/v[W~m`NrvkMqz3wV

    我们在这个页面上使用SharpZipLib,但是代码路径不应该使用它。

    有人知道为什么会发生这种情况,以及如何预防?

    编辑: 它只在火狐上发生。IE(8)正确显示错误消息。

    这似乎是随机发生的,只是在一些网页/网站上。另一个IIS站点上的同一页面工作正常。它似乎只在IIS7上这样做;我没有IIS6上的报告,我也没有在我的开发机器上遇到过。

    编辑3:

    编辑4: 好吧,所以,它只发生在IIS7上,只有当我得到一个错误500。我认为可能是IIS错误页有问题。我怎样才能试着改变它们呢?

    回应
    缓存控制专用
    内容类型text/html;字符集=utf-8
    服务器Microsoft IIS/7.0

    由ASP.NET提供X-Powered
    日期:2011年4月4日星期一格林尼治标准时间10:31:24

    请求
    主机xxxx

    接受text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8

    接受编码gzip,deflate
    接受字符集ISO-8859-1,utf-8;q=0.7,*;q=0.7

    连接保持有效
    参考号:xxxxx
    饼干

    3 回复  |  直到 13 年前
        1
  •  8
  •   thomasb DaveRead    13 年前

    我没有找到任何真正的解决办法,但我找到了一个令人满意的解决办法。

    请记住,问题仅在以下情况下出现:

    • 实际上,显示垃圾符号的页面已经崩溃。实际上,生成的“垃圾”是一条未解压缩的gzip压缩错误消息,或者类似的消息。
    • 在动态或静态内容上禁用gzip压缩不会改变任何内容

    http://forgetmenotes.blogspot.com/2009/05/how-to-disable-gzip-compression-in.html :

    1. 在URL栏中键入about:config(接受免责声明)
    2. 双击行“network.http.accept encoding”
    3. 清空值

    在我的网站上,它对CSS做了一些奇怪的事情(StackOverflow在那之后根本没有任何CSS),但至少它正确地向我显示了错误消息,这使我能够修复这个错误。

    希望它能帮助别人。

        2
  •  7
  •   Community rohancragg    7 年前

    对于遇到这种情况的任何人来说,另一个解决方法是删除应用程序错误时的响应过滤器,它将去掉编码并通过未压缩的方式发送。因为这只针对错误消息,所以对性能的影响应该是最小的。

    在您的Global.asax中

    VB语言

    Sub Application_Error()
        Response.Filter = Nothing
    End Sub
    

    protected void Application_Error(object sender, EventArgs e)
    {
        Response.Filter = null;
    }
    

    里克·斯特拉尔的功劳 this blog post 为了解决问题。

    注:我在这里还加了一个我自己问题的答案- IISExpress garbled HTTP 500 error message

        3
  •  3
  •   Community rohancragg    7 年前

    检查是否以某种方式在页面上设置了内容长度,然后使用gZip过滤器。如果是,则从代码中删除内容长度集。

    当您发送内容长度,然后压缩它,而iis无法将头内容长度更改为新的压缩长度,并且发送了错误的大小,然后浏览器读取了错误的大小,未能正确解压缩时,可能会发生这种情况。


    ASP.NET site sometimes freezing up and/or showing odd text at top of the page while loading, on load balanced servers

    更新

    响应.ContentType ,例如将其设置为文本并发送gif图像,或将其设置为图像并发送文本。

    可能是内容类型上的错误。设置此标题:

    context.Response.ContentType = "application/octet-stream";
    context.Response.AppendHeader("Content-disposition", "attachment; filename=" + cFileNameToShowAndDownload);
    
        4
  •  1
  •   BurnsBA svenningsson    5 年前

    我在dotnet core中遇到了类似的问题。(这个问题现在已经接近9岁了。别以为这对op有帮助,但也许其他人会觉得这有帮助)。

    我收到了类似的乱码文本,看起来像gzip编码。像选择的答案一样禁用firefox中的压缩似乎验证了这一点。该问题只在尝试使用包含非标准内容的脚本块(kendo模板)呈现局部视图时出现。它与异常发生与否无关。

    问题归结于配置。我们使用的第三方库破坏了响应。使用压缩作为Microsoft的大纲 https://docs.microsoft.com/en-us/aspnet/core/performance/response-compression?view=aspnetcore-2.2 修正了这个问题(我们停止使用第三方库)。如前所述 https://stackoverflow.com/a/54372810/1462295 ,在配置压缩和静态文件设置时,顺序很重要。

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddResponseCompression(options =>
        {
            options.Providers.Add<BrotliCompressionProvider>();
            options.Providers.Add<GzipCompressionProvider>();
        });
    }
    
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // ordering matters here
        app.UseResponseCompression();
        app.UseStaticFiles();
    }