Почему в моем теле ответа http внезапно появляется куча тарабарщины? - PullRequest
0 голосов
/ 17 декабря 2009

Я пытаюсь реорганизовать существующее веб-приложение asp.net-mvc и ввести mvc-turbine.
Приложение работает как есть, но я хочу сделать его более подключаемым и обслуживаемым, чтобы в будущем его обслуживание было проще.

Я решил, что постараюсь сделать шаги рефакторинга как можно меньше, поэтому я сослался на 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 совсем не так, как предполагалось, но это сделало бы изменения для первого шага настолько малыми, насколько это возможно.
Когда я сейчас запускаю, я вижу, что код в моем контроллере работает и работает правильно. Тогда мои взгляды оказываются. Я могу пройти через каждую строку, никаких проблем там тоже нет. И тогда результат отображается в браузере: бред.
í½ I%&/mÊ{JõJ×àt¡ $ Ø @ ìÁÍæìiG #) «* ÊeVe] е @ Ìí¼ ÷ Þ {ï½ ÷ Þ
и т. д., целую страницу этого.

Я не сталкивался с этой проблемой без Turbine и не сталкивался с какими-либо проблемами в предыдущих тестах, где я представлял Turbine с самого начала.
Любые идеи о том, как я могу начать отлаживать это?

Ответы [ 2 ]

2 голосов
/ 17 декабря 2009

Я бы сказал, что вы как-то дважды получаете вывод. Изучите Response.Filter и HttpModules, загруженные после вызова Application_Start () из вашего .cctor и после его вызова из механизма ASP.NET.

В качестве альтернативы, убедитесь, что у вас установлены шрифты Klingon; -)

1 голос
/ 18 декабря 2009

Turbine не добавляет сжатие в ваше приложение, так что это другая проблема.

Однако для метода Application_Start его не следует вызывать в статическом конструкторе.

Вместо этого вы должны переопределить метод запуска и выполнить любую логику здесь. Однако это не даст доступ к IServiceLocator, который вы настроили для приложения. Если вам нужен IServiceLocator, переопределите метод PostServiceLocatorAcquisition, для доступа к нему можно использовать свойство ServiceLocator.

Надеюсь, это поможет!

...