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


135

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

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

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

이 줄에 :

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

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

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


1
VS localhost 웹 서버 (Cassini)에서 MVC 2와 동일한 문제가 있습니다.
Morten Christiansen

1
이 동일한 문제 (및 해결)는 IIS 7.0의 MVC 3에도 적용 할 수있는 것으로 보입니다.
CrazyPyro

2
새로운 프로젝트로 MVC4 및 IIS6 에서도이 문제가 있습니다. webmatrix. *를 제거하여 수정했습니다. 아래 답변을 참조하십시오.
Andrew Backer

나는 같은 오류가 있었지만 회원 제공 업체의 상황에서는 그렇지 않았으므로 받아 들인 대답은 도움이되지 않았습니다. 구성 섹션에서 어셈블리를 지정하지 않고 바보 같은 실수를 저지른 것으로 나타났습니다. 섹션 이름을 "fully.qualified.name.of.type, assembly.name"으로 변경하여 오류를 해결했습니다.
FishesCycle

답변:


253

이것을 web.config (appSettings 섹션)에 추가하십시오 :

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

편집하다:

이유를 묻는 사람은 mvc 3 릴리스 정보에 설명 된 알려진 문제입니다. 자세한 내용은 여기를 참조 하십시오.


3
좀 더 확장 해 주시겠습니까? web.config의 어디에? 열쇠는 무엇을 하는가? 해당 키의 온라인 설명서를 찾는 데 문제가 있습니다.
Kennet Belenky

2
내가 참조. 보안 및 멤버쉽 규칙을 자동으로 정의하므로 사용자 정의 규칙을 추가하기 전에이를 재정의해야합니다. 교활한.
Jonathan Allen

4
새 프로젝트를 만들면이 오류가 발생하지 않으며 이러한 키를 추가 할 필요가 없습니다. 기존 프로젝트에서 이러한 키를 추가해야 작동했습니다.
ridermansb

2
왜? 누군가 설명 / 문서에 연결할 수 있습니까?
Matt Kocaj 2012

1
첫 번째 줄은 MVC4에서 나를 위해 수정했습니다. <add key = "enableSimpleMembership"value = "false"/>
angularsen

39

내 응용 프로그램 중 일부를 ASP.NET MVC3에서 MVC4로 업그레이드 한 후이 오류가 발생했습니다. WebMatrix 어셈블리 (WebMatrix.WebData.dll 및 WebMatrix.Data.dll)의 결과입니다. / bin 디렉토리에서 해당 참조 및 어셈블리를 제거했으며 문제가 해결되었습니다.


2
@rboarman-반복해서 수정했습니다. 어셈블리가 여전히 / bin 디렉토리에 있지 않습니까?
저스틴 Helgerson

위에서 설명한대로 키를 추가하면 수정되었습니다. WebMatrix.WebData.dll 및 WebMatrix.Data.dll의 존재는 어느 쪽도 차이를 만들지 않았습니다.
rboarman

MVC4RC에서 RTM으로 업그레이드 할 때 문제가 해결되었습니다. 나는 새로운 프로젝트를 만들고 모든 관련 비트를 복사하여 시작했습니다. 코드를 변경하지 않았으며 web.config도 크게 변경되지 않았습니다. 이상한.
Andrew Backer

1
나를 위해 고쳤다. 나는 Azure에 몇 가지를 설치하고 프로젝트를 구축 한 상황에서 TFS를 통해 원치 않는 것이 아니라 실행 취소를 결정했기 때문에 모든 코드가 작동했을 때의 코드와 동일했습니다. 그러나 내 bin 폴더는 약간 무겁습니다. 프로젝트에서 Clean을 호출하는 대신 WebMatrix 어셈블리를 수동으로 지우는 것이 효과가있었습니다. 고마워 Ek0nomik.
Yetti

감사. 이것은 나를 위해 그것을 고쳤다.
corix010

8

@ Ek0nomik가 옳습니다. 우리는에서 마이그레이션 MembershipProvider새에 ExtendedMembershipProvider우리가에서 제공되는 새로운 기능 중 일부를 활용할 수 있도록 WebMatrix의 네임 스페이스. 기본적으로 Simple Membership은 어떤 이유로 활성화되어 있으므로를 사용하지 않고 명시 적으로 비활성화해야했습니다 SimpleMembershipProvider.

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

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

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


6

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


2

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

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

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

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

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.