【问题标题】:Why does my http response body suddenly contain a load of gibberish?为什么我的 http 响应正文突然包含一堆乱码?
【发布时间】:2010-12-27 14:22:59
【问题描述】:

我正在尝试重构现有的 asp.net-mvc Web 应用程序并引入 mvc-turbine。
该应用程序按原样运行,但我想让它更具可插拔性和可维护性,以便将来的维护更容易。

我想我会尽量减少重构步骤,所以我参考了 MvcTurbine、MvcTurbine.Unity 和 MvcTurbine.Web。
然后我让 global.asax.cs 中的 MvcApplication 看起来像这样:

Public class MvcApplicatoin : TurbineApplication{
    static MvcApplication(){
        ServiceLocatorManager.SetLocatorProvider(() => new UnityServiceLocator());
        Application_Start();
    }
    <snip of all code that hasn't changed/>
}

我意识到调用 Application_Start 不是应该的方式,但这会使第一步的更改尽可能小。
当我现在运行时,我看到控制器中的代码被命中并正确运行。然后我的观点正在呈现。我可以遍历每一行,那里也没有问题。然后结果会显示在浏览器中:乱码。
������í½I%&amp;/mÊ{JõJ×àt¡$Ø@ìÁÍæìiG#)«*ÊeVe]f@Ìí¼÷Þ{ï½÷Þ
等等,一整页。

在没有 Turbine 的情况下我没有遇到过这个问题,我在之前的测试中也没有遇到任何问题,我会从一开始就引入 Turbine。
关于如何开始调试的任何想法?

【问题讨论】:

    标签: c# asp.net-mvc refactoring turbine


    【解决方案1】:

    我会说你以某种方式将输出压缩了两次。查看从 .cctor 调用 Application_Start() 以及从 ASP.NET 引擎调用之后加载的 Response.Filter 和 HttpModules。

    或者,确保您安装了克林贡字体 ;-)

    【讨论】:

    • 是的,这也是我的第一个想法。因此,我删除了对我的压缩模块的引用,并从 web.config 中删除了所有跟踪。无济于事:s
    • 更改后清除缓存?
    • 双重检查。还删除了所有垃圾箱
    • 我在整个解决方案中搜索了“compres”,发现了一个被遗忘且未使用的(查找用法没有返回任何东西)HttpCompressionModule.cs,我将其删除。结合删除对我正在使用的实际压缩模块的所有引用 (blowery.Web.HttpCompress) 成功了。检查响应它仍然是压缩的。我唯一的猜测是涡轮机已经在某处增加了压缩。
    【解决方案2】:

    Turbine 不会向您的应用程序添加任何压缩,因此这是一个不同的问题。

    但是,对于 Application_Start 方法,您不应在静态构造函数中调用它。

    您应该做的是覆盖 Startup 方法并在此处执行任何逻辑。但是,这不会授予对您为应用程序配置的 IServiceLocator 的访问权限。如果需要 IServiceLocator,重写 PostServiceLocatorAcquisition 方法,可以使用 ServiceLocator 属性来访问它。

    我希望这会有所帮助!

    【讨论】:

    • 感谢您的信息。尽管我没有寻找更好的方法,但我认为调用 application_start 不是正确的方法。然而,我正在尝试以微小的步骤进行重构,因为在改进我的架构方面需要做很多工作。这是我的第一个大项目之一,现在我为次优的设计选择付出了代价。不过,我会一直使用你的建议:)
    猜你喜欢
    • 2013-02-04
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多