ASP.NET: этот метод не может быть вызван во время этапа инициализации перед запуском приложения
Я пытаюсь получить сайт ASP.NET MVC 3, работающий на IIS 6.0.
В настоящее время, когда я запрашиваю страницу с сервера, она дает следующую ошибку:
Сообщение об ошибке Parser: этот метод не может быть вызван во время этапа инициализации перед запуском приложения.
в этой строке:
<add name="MyMembershipProvider" type="NS.MyMembershipProvider" connectionStringName="MyDatabase" applicationName="/MySite"/>
Я полностью потрясен и не очень разбираюсь в жизненном цикле приложений ASP.NET, не говоря уже о различиях между 6.0 и 7.0. Чтение страниц MSDN на нем, похоже, мало помогло.
Есть ли у кого-нибудь проницательность или какие-либо хорошие ссылки для расследования?:)
Ответы
Ответ 1
Добавьте это в свой web.config(в разделе appSettings):
<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>
EDIT:
Для тех, кто спрашивает, почему это известная проблема, описанная в примечаниях к выпуску mvc 3
Подробнее здесь
Ответ 2
После обновления некоторых моих приложений от ASP.NET MVC3 до MVC4 я получал эту ошибку. Это было результатом сборки WebMatrix (WebMatrix.WebData.dll и WebMatrix.Data.dll). Я удалил эти ссылки и сборки из каталога /bin и позаботился о проблеме.
Ответ 3
@Ek0nomik прав. Мы перешли из MembershipProvider
в новый ExtendedMembershipProvider
позволяя нам воспользоваться некоторыми новыми функциями, предлагаемыми в пространстве имен WebMatrix. По умолчанию Simple Membership включен по какой-то причине, поэтому мы должны были отключить его явно, так как мы не хотели доходить до использования SimpleMembershipProvider
.
Все, что нам нужно было сделать, это добавить это в web.config:
<add key="enableSimpleMembership" value="false"/>
Наличие Simple Membership enabled привело к тому, что код инициализации провайдера выполнился перед обработчиком Application_Start. Наша структура приложения требует, чтобы приложение App_Start было первым. Лично я всегда ожидал бы этого, но Simple Membership меняет это поведение. Осторожно.
Ответ 4
Ну, я только что получил эту ошибку, и это произошло из-за случайного копирования .cshtml в корень моего проекта. Он даже не был включен в проект. Удалено, и ошибка исчезла. Это было с MVC3 на IIS7. Я полагаю, что некоторые из тех, кто сталкивается с этой проблемой, находятся в одной лодке.
Ответ 5
Это вызвано тем, что любое количество вызовов Reflection выполняется слишком рано в приложении. Так получилось, что предложения Web.Config в других ответах не позволили сделать один такой вызов Reflection. Однако в моем случае:
Я использую Entity Framework и запускаю update-database
. Я получил:
Этот метод не может быть вызван во время фазы инициализации перед запуском приложения.
Как оказалось, у нас был код, который использовал недавно измененную библиотеку, чтобы получить весь код во всех пространствах имен/проектах. В частности, он называл:
System.Web.Compilation.BuildManager.GetReferencedAssemblies()
Kaboom. Это вызвало эту неясную ошибку. EF Миграции выполняются в зоне weirdo, где приложение работает наполовину, а половина нет, то есть вышеприведенный метод никогда не может быть вызван каким-либо кодом, который вызовет Migrations.