2009-12-17 101 views
0

我想重构现有的asp.net-mvc web应用程序并引入mvc-turbine。
该应用程序按原样工作,但我希望使其更易于插拔和维护,以便将来的维护更加轻松。为什么我的http响应体突然包含一堆乱码?

我想尽量保持重构步骤尽可能小,所以我引用MvcTurbine,MvcTurbine.Unity和MvcTurbine.Web。
后来我做了我的MvcApplication中的global.asax.cs是这样的:

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

我知道打电话的Application_Start是不是它是如何应该去,但会保持在第一步的变化尽可能小。
当我现在运行时,我看到我的控制器中的代码被击中并正确运行。然后我的意见正在呈现。我可以通过每一行,也没有问题。然后结果显示在浏览器中:乱码。
012í½I%&/mÊ{JõJ×àt¡ $Ø@ìÁÍæìiG#)«*ÊeVe] f @̼÷Þ{ 等等,整个页面。

没有涡轮机,我没有遇到过这个问题,也没有在之前的测试中遇到任何问题,我会从一开始就介绍涡轮机。
关于如何开始调试的任何想法?

回答

2

我会说,不知何故,你gliting输出两次。检查从.cctor调用Application_Start()之后加载的Response.Filter和HttpModules,然后在ASP.NET引擎中调用它。

此外,请确保您已安装;-)

+0

是的,那也是我的第一个想法。因此,我删除了对压缩模块的引用,并从web.config中删除了所有跟踪。无效:s – 2009-12-17 10:25:15

+0

更改后清除缓存? – Gonzalo 2009-12-17 10:38:05

+0

重新启动应用程序? – Gonzalo 2009-12-17 10:38:37

1

涡轮不进行任何压缩添加到您的应用程序中的克林贡语的字体,所以这是一个不同的问题。

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

你应该做的是改写启动方法并在此执行任何逻辑。但是,这不会访问您为应用程序配置的IServiceLocator。如果您需要IServiceLocator,请覆盖PostServiceLocatorAcquisition方法,则可以使用ServiceLocator属性来访问它。

我希望这有助于!

+0

感谢您的信息。虽然我没有看到更好的方法,但我认为调用application_start是不正确的。然而,我正在尝试以微小的步骤进行重构,因为在改进我的架构方面有相当多的工作要做。这是我的第一个大项目之一,现在我付出了次优设计选择的代价。我会沿途用你的建议:) – 2009-12-21 08:20:15

相关问题