ASP.NET: этот метод не может быть вызван на этапе начальной инициализации приложения - PullRequest
134 голосов
/ 07 января 2011

Я пытаюсь заставить сайт ASP.NET MVC 3 работать на IIS 6.0.

В настоящее время, когда я запрашиваю страницу с сервера, она выдает следующую ошибку:

Сообщение об ошибке синтаксического анализатора: этот метод не может быть вызван на этапе предварительной инициализации приложения.

в этой строке:

<add name="MyMembershipProvider" type="NS.MyMembershipProvider" connectionStringName="MyDatabase" applicationName="/MySite"/>

Я полностью озадачен и не очень разбираюсь в жизненном цикле приложений ASP.NET, не говоря уже о различиях между 6.0 и 7.0. Чтение страниц MSDN не очень помогло.

Есть ли у кого-нибудь понимание или хорошие ссылки для расследования? :)

Ответы [ 5 ]

251 голосов
/ 13 января 2011

Добавьте это в ваш web.config (в разделе appSettings):

<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>

РЕДАКТИРОВАТЬ:

Для тех, кто спрашивает, почему, это известная проблема, описанная в MVC3 примечания к выпуску Подробнее здесь

39 голосов
/ 13 сентября 2012

После обновления некоторых моих приложений с ASP.NET MVC3 до MVC4 я получал эту ошибку.Это было результатом сборок WebMatrix (WebMatrix.WebData.dll и WebMatrix.Data.dll).Я удалил эти ссылки и сборки из каталога / bin, и это решило проблему.

7 голосов
/ 08 октября 2013

@ Ek0nomik прав.Мы перешли с MembershipProvider на новое ExtendedMembershipProvider, что позволило нам воспользоваться некоторыми новыми функциями, предлагаемыми в пространстве имен WebMatrix .По умолчанию простое членство по какой-то причине включено, поэтому нам пришлось отключить его явно, так как мы не хотели заходить так далеко, как использовать SimpleMembershipProvider.

Все, что нам нужно было сделатьбыло добавлено это в web.config:

<add key="enableSimpleMembership" value="false"/>

Включение простого членства привело к выполнению кода инициализации провайдера перед обработчиком Application_Start.Наша структура приложения требует, чтобы App_Start выполнялся первым.Лично я всегда ожидал бы этого, но Простое Членство меняет это поведение.Осторожно.

6 голосов
/ 01 декабря 2012

Ну, я только что получил эту ошибку, и это произошло из-за случайного копирования .cshtml в корень моего проекта. Это даже не было включено в проект. Удалил это и ошибка ушла. Это было с MVC3 на IIS7. Я полагаю, что некоторые люди, сталкивающиеся с этой проблемой, находятся в одной лодке.

0 голосов
/ 30 июня 2016

Это вызвано тем, что в приложении слишком рано выполняются вызовы Reflection. Так получилось, что предложения Web.Config в других ответах не позволили сделать один такой вызов Reflection. В моем случае, однако:

Я использую Entity Framework и запустил update-database. Я получил:

Этот метод не может быть вызван на этапе начальной инициализации приложения.

Как оказалось, у нас был код, который использовал библиотеку, которая была недавно изменена, чтобы получить весь код во всех пространствах имен / проектах. В частности, он называется:

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

Kaboom. Это вызвало эту неясную ошибку. Миграции EF выполняются в странной зоне, где приложение работает наполовину, а наполовину - нет, что означает, что вышеуказанный метод никогда не может быть вызван кодом, который вызовет миграция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...