При обновлении до бета-версии MVC до RC1 приложение внезапно падает, где оно не должно падать - PullRequest
0 голосов
/ 09 февраля 2009

Когда мы обновили бета-версию MVC до MVC RC1, веб-сервер разработки, который Visual Studio внезапно вышел из строя в какой-то момент в приложении. После некоторых поисков я сузил ошибку до следующей простой строки:

if (!helper.ViewData.ContainsKey("SomeString"))

SomeString в данный момент присутствует в viewData, поэтому оператор if должен возвращать false

при выполнении этой строки веб-сервер аварийно завершается, в программе нет исключений. Мы видим сбой, который, кажется, происходит от метода ContainsKey. Кто-то испытывал такую ​​же проблему? мы должны откатить нашу инсталляцию до бета-версии MVC?

Ответы [ 4 ]

0 голосов
/ 11 февраля 2009

Я нашел проблему. Код, который выполняет метод ContainsKey, находился во внешней библиотеке. когда мы обновили наши машины для разработки до RC1, мы забыли обновить наш сервер сборки до RC1.Так что библиотеки, на которые мы ссылались, были собраны со ссылкой на mvc beta. я все еще нахожу странным, что эти ошибки могут произойти, но это была проблема.

когда мы обновили наш сервер сборки, ошибка исчезла.

0 голосов
/ 09 февраля 2009

Я не могу дать вам точный ответ, не увидев вашу ошибку, но я думаю, это потому, что ViewData.Model стал просто Model.

См .: http://blog.benhall.me.uk/2009/01/aspnet-mvc-rc1-viewdatamodel-becomes.html или http://weblogs.asp.net/scottgu/archive/2009/01/27/asp-net-mvc-1-0-release-candidate-now-available.aspx

0 голосов
/ 09 февраля 2009

Какое исключение вы видите в диспетчере событий Windows? Там есть некоторая информация, которая может быть полезна, я думаю, что приложение называется Casini

0 голосов
/ 09 февраля 2009

Я не знаю ответа, но я могу рассказать вам, как его найти. По моему опыту, когда происходит сбой веб-сервера разработки, это обычно происходит из-за переполнения стека в вашем коде (или, очевидно, в коде в платформе, которую вы вызываете). Конечно, вы можете получить исходный код MVC из CodePlex. Вы должны скачать это и добавить в свое решение. Проследите в ContainsKey. При необходимости используйте параметр Visual Studio для трассировки исходного кода платформы .NET. В какой-то момент вы должны выяснить, почему код меняется.

...