ASP.NET: этот метод не может быть вызван на этапе начальной инициализации приложения
Я пытаюсь получить сайт 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 ответов
Добавьте это в ваш web.config (в разделе appSettings):
<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>
РЕДАКТИРОВАТЬ:
Для тех, кто спрашивает, почему, это известная проблема, описанная в примечаниях к выпуску mvc 3 Подробнее здесь
После обновления некоторых моих приложений с ASP.NET MVC3 до MVC4 я получал эту ошибку. Это было результатом сборок WebMatrix (WebMatrix.WebData.dll и WebMatrix.Data.dll). Я удалил эти ссылки и сборки из каталога /bin, и это решило проблему.
@Ek0nomik прав. Мы мигрировали из MembershipProvider
к новому ExtendedMembershipProvider
что позволяет нам воспользоваться некоторыми из новых функциональных возможностей, предлагаемых в пространстве имен WebMatrix. По умолчанию простое членство по какой-то причине включено, поэтому нам пришлось отключить его явно, так как мы не хотели заходить так далеко, как использовать SimpleMembershipProvider
,
Все, что нам нужно было сделать, это добавить это в web.config:
<add key="enableSimpleMembership" value="false"/>
При включенном Простом членстве код инициализации провайдера выполнялся перед обработчиком Application_Start. Наша структура приложения требует, чтобы App_Start выполнялся первым. Лично я всегда ожидал бы этого, но Простое Членство меняет это поведение. Осторожно.
Ну, я только что получил эту ошибку, и это произошло из-за того, что случайно скопировал.cshtml в корень моего проекта. Это даже не было включено в проект. Удалил это и ошибка ушла. Это было с MVC3 на IIS7. Я предполагаю, что некоторые из людей, получающих эту проблему, находятся в одной лодке.
Это вызвано тем, что в приложении слишком рано выполняются вызовы Reflection. Так получилось, что предложения Web.Config в других ответах не позволили сделать один такой вызов Reflection. В моем случае, однако:
Я использую Entity Framework, и побежал update-database
, Я получил:
Этот метод не может быть вызван на этапе начальной инициализации приложения.
Как оказалось, у нас был код, который использовал библиотеку, которая была недавно изменена, чтобы получить весь код во всех пространствах имен / проектах. В частности, это называется:
System.Web.Compilation.BuildManager.GetReferencedAssemblies()
Kaboom. Это вызвало эту неясную ошибку. Миграции EF выполняются в странной зоне, где приложение работает наполовину, а наполовину - нет, что означает, что вышеупомянутый метод никогда не может быть вызван ни одним кодом, который вызовет миграция.