Asp.net MVC5 WebRole после развертывания в облаке Azure, работает на @Scripts.Render
У меня есть облачный сервис с Asp.Net MVC 5 Web Role и Azure SDK 2.3, предназначенный для платформы 4.5.1; Сайт отлично работает в Local. Но когда я развертываю его в облачной службе Azure, у меня появляется классическая нулевая ссылка:
В экземпляре объекта не задана ссылка на объект. Сведения об исключении: System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
Ошибка источника:
Line 9: @Scripts.Render("~/bundles/jquery")
Мой BundleConfig.cs прост:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/knockout-{version}.js",
"~/Scripts/jquery.signalR-{version}.js",
"~/Scripts/modernizr-{version}.js"
));
Используя Intellitrace Logs на WebRole, я вижу эту ошибку:
неверное имя файла для мониторинга файлов 'E:\sitesroot\0\Scripts
При удаленном входе в экземпляр я вижу, что папка Scripts находится именно по этому пути.
Удаление @Script.Render страница загружается нормально. @Style.Render на той же странице работает.
Я попытался выполнить развертывание в режиме отладки и в режиме выпуска, как в промежуточной версии.
Также попытался изменить в Web.config свой
compilation debug="true" and false
без успеха. Есть идеи, почему это могло произойти? Спасибо
2 ответа
После нескольких дней тестов я обнаружил, что проблема в пакете WEBGREASE. Обновление приведет к проблеме даже в новом новом проекте. Пока удаление и повторная установка предыдущей версии решили проблему.
Попробуйте удалить все, кроме jquery, из пакета jquery. Затем создайте новый пакет для jquery-зависимых сценариев (knockout, jquery.signalR & modernizr) и отобразите его после пакета jquery.