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

どういうわけか、出力を2回gzipしていると思います。Application_Start()が.cctorから呼び出された後、およびASP.NETエンジンから呼び出された後にロードされたResponse.FilterとHttpModulesを確認してください。

または、Klingonフォントがインストールされていることを確認してください;-)

于 2009-12-17T10:15:38.233 に答える
1

Turbine はアプリケーションに圧縮を追加しないため、それは別の問題です。

ただし、Application_Start メソッドについては、静的コンストラクター内で呼び出すべきではありません。

代わりにすべきことは、Startup メソッドをオーバーライドして、ここで任意のロジックを実行することです。ただし、これでは、アプリケーション用に構成した IServiceLocator へのアクセスは許可されません。IServiceLocator が必要な場合は、PostServiceLocatorAcquisition メソッドをオーバーライドします。ServiceLocator プロパティを使用してアクセスできます。

これが役立つことを願っています!

于 2009-12-18T03:23:42.890 に答える