Попытка прозрачного метода безопасности «WebMatrix.WebData.PreApplicationStartCode.Start ()»


176

Обновление: то же самое для MVC 4 до MVC 5.

Я запустил новый проект mvc 4 и перенес в него проект mvc 3 (контроллеры / модели / скрипты и т. Д.). Пока все компилируется, я получаю следующую ошибку:

Попытка прозрачного для безопасности метода «WebMatrix.WebData.PreApplicationStartCode.Start ()» для доступа к критическому методу безопасности «System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport (System.String)» завершилась неудачно.

Я не могу найти что-либо в Интернете с этой ошибкой. Ошибка попадает до входа в приложение.

Я попытался переустановить все сборки с помощью nuget, но «чистый» web.config не помог.

У кого-нибудь была эта проблема раньше?

Ответы:


246

Для меня эта ошибка была из-за того, что у меня НЕ было установлено приложение Microsoft.AspNet.WebHelpers после обновления с MVC 4 до MVC 5. Это было исправлено установкой пакета NuGet

Install-Package -Id  Microsoft.AspNet.WebHelpers

1
Это решило проблему для меня; это создало некоторые проблемы с пространством имен в моем Resourcesклассе, но я изменил его на Properties.Resources.xxxxxи проблемы были исправлены.
Коди

2
Я запустил это, и это не сработало ... но потом, к счастью, я увидел, что в другом ответе есть вторая команда для запуска: stackoverflow.com/a/22587521/482256
Кевин Нельсон

это исправило его для меня, но мне также понадобилось следующее в привязках сборки code<depenAssembly> <assemblyIdentity name = "WebMatrix.WebData" publicKeyToken = "31bf3856ad364e35" culture = "нейтральный" /> <bindingRedirect oldVersion = "0.0.0.0-3.0.0.0 "newVersion =" 3.0.0.0 "/> </ code
pendentAssembly

Я устанавливаю вышеупомянутый пакет, и проблема исчезла. Я использовал NUget UI для его установки, и он также установил все зависимости для меня
Atta H.

204

Если вы получаете ошибку

Попытка прозрачного для безопасности метода «WebMatrix.WebData.PreApplicationStartCode.Start ()» для доступа к критическому методу безопасности «System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport (System.String)» завершилась неудачно.

Чтобы исправить это, установите этот пакет, используя менеджер пакетов NuGet.

Install-Package Microsoft.AspNet.WebHelpers

После этого, вероятно, вы получите еще одну ошибку

Не удается загрузить сборку WebMatrix.Data версии 3.0.0.0

чтобы исправить это, установите этот пакет, используя менеджер пакетов NuGet.

Install-Package Microsoft.AspNet.WebPages.Data

У меня была именно эта ошибка при обновлении до VS 2015 RTM. Тот же код прекрасно работал с VS 2013, с той лишь разницей, что новый файл .config, который генерирует 2015 для IIS, я подозреваю, что IISExpress 2013 игнорирует. Этот ответ также исправил этот случай, добавив оба нюгета.
angularsen

Следует отметить, что мне вообще не удалось запустить мой сайт с VS2015 RTM. Установка Microsoft.AspNet.WebHelpers исправила YSOD, но затем я получил тайм-аут из-за некоторых прав доступа SQL. Точно такой же код прекрасно работал в VS2013.
angularsen

1
Я столкнулся с этой проблемой при использовании VS 2013 Express Edition при обновлении с ASP .NET MVC 4 до ASP .NET MVC 5. Это было полезно, поскольку @Anushka рассказала вторую проблему с решением.
Джерамеил Resco

Я получаю эту ошибку, когда пытаюсь запустить свое решение в VS 2015. Он отлично работает в VS 2013. Установка двух пакетов, как это предлагается, работает, но я не уверен, зачем мне их устанавливать. У меня есть другие решения, которые я разработал в VS 2013, которые не получают эту ошибку в VS 2015.
John81

2
Мы обнаружили, что VS2015 решает поместить некоторые библиотеки WebMatrix в каталог bin веб-приложения при компиляции - VS2013 этого не делает. Я не знаю, откуда 2015 получает эти библиотеки DLL, но они должны отличаться от тех библиотек DLL, которые загружаются из GAC (я полагаю), когда вы запускаете приложение, которое было скомпилировано VS2013 без явной DLL-библиотеки WebMatrix включен в каталог приложения bin. Обратите внимание: если вы удалите 4 файла WebMatrix из выходных данных 2015 года и перезапустите IIS, проблема исчезнет.
Саймон Грин

19

Для тех, кто приземлился здесь и пытается обновить MVC 4 до MVC5, я смог решить эту проблему, следуя инструкциям на http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade. -an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2 .

Мне также пришлось установить пакет «Microsoft.AspNet.WebApi.WebHost» из nuget. Но это все.

Ох, и мне пришлось создать это приложениеНастройка: <add key="owin:AutomaticAppStartup" value="false" />

:)


14

Я перепробовал все вышеперечисленные решения, и он все равно не работал, пока не обнаружил, что элемент компиляции web.config ссылается на версии 2.0.0.0 WebMatrix.Data и WebMatrix.WebData. Помогло изменение версии этих записей в web.config на 3.0.0.0.


10

Я боролся с подобной проблемой при обновлении mvc 4до mvc 5:

Попытка прозрачного для безопасности метода «System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule ()» для доступа к критическому методу безопасности «System.Web.WebPages.ApplicationPart..ctor (System.Reflection.Assembly, System.String)» не удалась.

Флажок удаления лишних файлов в диалоге публикации решил эту проблему для меня.


У меня была эта ошибка в моем размещенном в провайдере приложении SharePoint 2013 (ASP.NET MVC 5, развернутом в Azure), «удаление дополнительных файлов» в диалоговом окне публикации также помогло мне решить эту проблему.
Анатолий Миронов


6

Еще одно предложение ... Это было вызвано для меня некоторыми старыми dll из проекта MVC 3 после обновления до MVC 5 в папке bin сайта на сервере развертывания. Хотя эти dll больше не использовались базой кода, они, похоже, вызывали проблему. Вычистил все это и повторно развернул, и это было хорошо.


Это было причиной моей ошибки. У меня были старые и новые файлы в папке bin. спасибо
Абхинау Шарма

5

Вы также можете получить:

Не удалось загрузить файл или сборку «WebMatrix.Data, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35» или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Это переехало в этот пакет

 Install-Package Microsoft.AspNet.WebPages.Data

Вероятно, вам следует выполнить чистую сборку, прежде чем пытаться ответить на любой вопрос, а также после обновления пакетов.


3

Вот как я исправил эту проблему:

Откройте консоль диспетчера пакетов nuget и установите следующие пакеты nuget:

Install-Package WebMatrix.Data
Install-Package Microsoft.AspNet.WebHelpers
Update-Package

Очистите решение, перестройте и мое веб-приложение asp.net начнет работать!


2

Удаление всех файлов из bin и последующее восстановление решения работало для меня.


1

Для меня эта ошибка была вызвана несовместимостью DotNetOpenAuth с MVC5 после обновления с MVC4 до MVC5. Удаление Microsoft.Web.WebPages.OAuth устранило проблему.


1

Я удалил его из своих ссылок. Затем запустите его в консоли диспетчера пакетов.

Install-Package WebMatrix.Data

Наконец, добавьте сборку WebMatrix.WebData к ссылкам и пересоберите проект. Это работает для меня. Надеюсь, это решит и вашу проблему.


0

Я установил webapi с ним через пакет nuget helppages. Этот пакет заменил большинство двоичных файлов asp.net mvc 4 на бета-версии, которые не работали вместе с остальной частью проекта. Исправлено было восстановить оригинальные MVC 4 DLL и все было хорошо.


0

У меня была такая же проблема, мне пришлось обновить MVC Future (Microsoft.AspNet.Mvc.Futures)

Install-Package Microsoft.AspNet.Mvc.Futures

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.