[asp.net-mvc] ASP.NET :이 메서드는 응용 프로그램의 사전 시작 초기화 단계에서 호출 할 수 없습니다

IIS 6.0에서 ASP.NET MVC 3 사이트를 실행하려고합니다.

현재 서버에서 페이지를 요청하면 다음 오류가 발생합니다.

파서 오류 메시지 : 응용 프로그램의 사전 시작 초기화 단계에서는이 메서드를 호출 할 수 없습니다.

이 줄에 :

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

완전히 혼란스러워 6.0과 7.0의 차이점은 물론 ASP.NET 응용 프로그램 수명주기에 대한 단서가 많지 않습니다. MSDN 페이지를 읽는 것이별로 도움이되지 않는 것 같습니다.

누구나 조사에 대한 통찰력이나 좋은 링크가 있습니까? 🙂



답변

이것을 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의 네임 스페이스. 기본적으로 Simple Membership은 어떤 이유로 활성화되어 있으므로를 사용하지 않고 명시 적으로 비활성화해야했습니다 SimpleMembershipProvider.

우리가해야 할 일은 이것을 web.config에 추가하는 것입니다.

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

단순 멤버쉽을 사용 가능하게하면 Application_Start 핸들러 전에 제공자 초기화 코드가 실행되었습니다. 우리의 앱 구조는 App_Start가 가장 먼저 실행되도록 요구합니다. 개인적으로 나는 항상 이것을 기대하지만 Simple Membership 은이 행동을 바꿉니다. 조심하십시오.


답변

글쎄,이 오류가 발생하여 실수로 프로젝트의 루트에 .cshtml을 복사 한 결과입니다. 프로젝트에는 포함되지 않았습니다. 그것을 삭제하고 오류가 사라졌습니다. 이것은 IIS7의 MVC3과 관련이 있습니다. 이 문제를 겪는 사람들 중 일부가 같은 보트에 있다고 생각합니다.


답변

애플리케이션에서 너무 많은 리플렉션 호출이 너무 일찍 발생했기 때문입니다. 다른 답변의 Web.Config 제안은 그러한 Reflection 호출 중 하나를 막지 못했습니다. 내 경우에는 그러나 :

Entity Framework를 사용하고 있으며 실행했습니다 update-database. 나는 얻었다 :

응용 프로그램의 사전 시작 초기화 단계에서는이 메소드를 호출 할 수 없습니다.

결과적으로 모든 네임 스페이스 / 프로젝트의 모든 코드를 가져 오기 위해 최근에 수정 된 라이브러리를 사용하는 코드가 있습니다. 구체적으로 다음과 같이 호출했습니다.

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

카붐. 이 모호한 오류가 발생했습니다. EF 마이그레이션은 응용 프로그램이 절반 만 실행되고 절반이 아닌 이상한 영역에서 실행됩니다. 즉, 마이그레이션이 호출하는 코드로 위의 메서드를 호출 할 수 없습니다.


답변