0

我正在尝试重构现有的 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%&/mÊ{JõJ×àt¡$Ø@ìÁÍæìiG#)«*ÊeVe]f@Ìí¼÷Þ{ï½÷Þ
等等,一整页。

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

4

2 回答 2

2

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

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

于 2009-12-17T10:15:38.233 回答
1

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

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

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

我希望这有帮助!

于 2009-12-18T03:23:42.890 回答