Global.asax의“파서 오류 메시지 : 유형을로드 할 수 없습니다”


203

MVC3 프로젝트에서 작업 중이며 다음 오류가 발생합니다.

파서 오류 메시지 : 'GodsCreationTaxidermy.MvcApplication'유형을로드 할 수 없습니다.

소스 오류 :

1 행 : <%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.Core.MvcApplication" Language="C#" %>

내가 얻는 오류는 GodsCreationTaxidermy.Core.MvcApplication을로드 할 수 없지만이 스크린 샷에서 핵심 부분이 오류로 표시되지 않습니다.

오류 페이지 스크린 샷

누구 든지이 오류에 대한 아이디어 나 해결책이 있습니까?


8
실제로 응용 프로그램에 GodsCreationTaxidermy.Core.MvcApplication 클래스가 있습니까? 그렇지 않은 경우 동일하게 작성하고 프로젝트를 컴파일하십시오. 확실히 작동합니다.
Shailesh

4
네, GodsCreationTaxidermy.Core.MvcApplication (Global.asax.cs)
PsychoCoder

스크린 샷에 따라 사용되는 Global.asax 파일이 표시된 파일과 다르게 보입니다.
Darin Dimitrov

상속 문자열이 응용 프로그램의 클래스 경로 (네임 스페이스 + 경로 이름)와 같은지 확인합니다. 즉, 둘 다 GodsCreationTaxidermy.Core.MvcApplication
linkerro

그것은 내가 무엇을 하든지 항상 핵심 부분을 떠나는 문제 Darin의 문제 중 하나입니다.
PsychoCoder

답변:


175

로컬 웹 서버가 실제로 작업중인 코드와 다른 코드를 실행 중입니다. 디버깅이 중지되었는지 확인하고 로컬 웹 서버를 중지 한 후 Peter가 제안한대로 정리 및 재구성하고 global.asax 및 global.asax.cs를 다시 확인한 후 다시 시도하십시오.

이것이 작동하지 않고 로컬 IIS를 사용하는 경우 IIS 관리자에서 사이트를 제거하고 수동으로 다시 작성하십시오.


4
실제로 매우 이상한 오류. 서버의 IIS에 배포했으며 이것을 얻었습니다. 청소하고 다시 컴파일하면 나에게도 효과가있었습니다.
Piotr Kula

2
Clean / Rebuild + 가상 디렉터리를 다시 만든 다음 작동했습니다.
fantastik78

4
두 개의 Visual Studio 인스턴스에서 동일한 프로젝트를 열었을 때 문제가 발생했습니다. 따라서 두 개의 IIS Express 인스턴스가 실행 중이었습니다. 나는 하나를 닫아야했고 해결되었습니다.
lvmeijer

4
프로젝트에서 bin / obj 폴더를 삭제할 수도 있습니다.
arni

1
나는이 지시 사항을 따라 몇 가지 추가 청소 / 재건을하고 .asax 파일의 공백을 변경하고 모니터를 다시 포맷했으며 팬 파이프와 함께 황량한 지그를 수행하여 트릭을 수행하는 것처럼 보였습니다.
MrBoJangles

206

프로젝트 출력 경로 (프로젝트 속성 / 빌드)로 설정되어 있는지 확인 bin하고 있지 bin\Releasebin\Debug

어떤 이유로 IIS (VS 개발 서버 또는 로컬 IIS)는 항상 bin디렉토리 에서 라이브러리에 액세스합니다 (하위 디렉토리를 찾지 않음)


27
마감일이 어디인지 신용하십시오. 내 문제를 해결했습니다. 응용 프로그램이 bin \ Debug를 사용하도록 설정되어 bin으로 변경되어 문제가 해결되었습니다. 많은 감사합니다.
Joey Bob

ASP.NET 프로젝트가 기본 출력 경로 bin / $ (Configuration) /을 사용하지 않는다는 것을 알고 흥미로 웠습니다. 답변 주셔서 감사합니다!
Jaanus Varus

2
@JamesPusateri : 조심하십시오. 시작할 때마다 / bin의 내용을 사용합니다. 아마도이 빌드를 변경 한 후에 만든 결과입니다.
Vincent de Lagabbe '10

1
와우, 2018 년 IIS는 여전히 이런 식으로 작동합니다. Microsoft에게는 나쁘다. 감사!
Rodrigo T.

1
거의 7 년 동안 아무것도 바뀌지 않았지만, 조언은 여전히 ​​도움이됩니다
Yuriy Vikulov

33

global.asax 파일을 수정하고 (어딘가에 공간을 추가하십시오) 다시 실행하십시오. 그러면 내장 웹 서버가 global.asax 파일을 새로 고치고 다시 컴파일해야합니다.

또한 청소하고 다시 작성하십시오-문제를 해결해야합니다


4
global.asax를 수정해도 아무런 효과가 없었지만 깨끗하고 재 구축하면 문제가 해결되었습니다.)
NightShovel

전원이 부족할 때이 문제가 발생했습니다. 청소 및 재건 도움. 감사!
Gorgi Rankovski

청소하지 못했습니다. 빌드에 실패했습니다. 빌드 경로에 문제가 없었습니다. 그러나 이것은 트릭을 수행했습니다. 감사!
egandalf

귀하의 답변에 감사드립니다 Mr. Munnings
dada

30

global.asax생성 된 후 네임 스페이스 정보 (프로젝트 또는 클래스 수준)를 변경하는 경우 가끔 발생합니다.

Global.asax파일을 마우스 오른쪽 단추로 클릭 하고 "연결 프로그램"을 선택한 다음 "인코딩이있는 XML (텍스트) 편집기"를 선택하십시오 (다른 편집기도 작동 할 수 있지만 이것이 내가 사용하는 것임).

그런 다음 XML 지시문에서 "상속"섹션을 편집하십시오.

<% @ Application Codebehind = "Global.asax.cs" 상속 = "GodsCreationTaxidermy.MvcApplication" Language = "C #"%>)

Application 클래스의 실제 이름과 일치하도록합니다. 그리고 그게 다야.

또 다른 옵션은 Global.asax.cs에서 모든 코드를 복사 한 다음 다른 Global.asax 파일을 삭제하고 생성 한 다음 코드를 다시 Global.asax.cs로 복사하는 것입니다.


이것은 또한 나를 위해 일했습니다. 솔루션의 모든 프로젝트에 대한 어셈블리의 네임 스페이스를 변경했습니다. 따라서이 Global.asax답변에 명시된대로 파일 을 편집 하고 프로젝트 구성 설정의 내용과 일치시켜야합니다.
시바

21

Visual Studio를 닫았다가 다시 열었습니다.


4
모든 비주얼 스튜디오 닫기
Jboy Flaga

11
먼저 우리는 차에서 내리고 모든 문을 닫은 다음 다시 들어와야합니다.
pajics

아니오, 모든 차량의 도어를 동시에 닫아야합니다.
BlackICE

17

BUILD-> CONFIGURATION MANAGER로 이동하여 프로젝트 옆의 상자를 선택하여 실제로 빌드되었는지 확인해야했습니다.


2
나는 downvote를 이해하지 못한다. 이것은 잠재적으로 해결책이 될 수 있습니다. 이것은 실제로 대부분의 생각보다 더 관련이 있습니다 ... 선택하지 않으면 항상 가장 명확한 위치는 아닙니다. 특히 여러 구성이있는 경우.
Anthony Mason

나는 당신의 대답과 당신의 추론을 좋아합니다!
UKM

1
이것은 내 문제이기도했으며 프로젝트에서 구성을 어떻게 선택 해제했는지 전혀 모른다.
Seth

5

나는 오늘이 문제를 겪었고 원인을 찾는 데 시간이 걸렸다.

기본적으로 내 주요 VS2015 프로젝트에는 상위 버전의 .Net Framework를 사용하여 빌드 된 하위 프로젝트가 포함되었습니다.

기 묘하게도이 문제가 발생하면 VS2015는 솔루션이 정상적으로 빌드되었다고 기꺼이보고하지만 웹 사이트를 실행하려고하면 Global.asax.cs파일을 잘못 잘못 제안하는 오도 된 오류가 발생합니다 .

따라서이 오류가 표시되고 청소 / 재 구축이 도움이되지 않으면 프로젝트 References트리를 열고 느낌표를 확인하십시오.

여기에 이미지 설명을 입력하십시오

또한 Output다음과 같은 메시지가 있는지 창을 확인하십시오 .

The primary reference "C:\Projects\Business Objects 4\bin\Release\BusinessObjects.dll" 
could not be resolved because it was built against 
the ".NETFramework,Version=v4.5" framework. 
This is a higher version than the currently targeted framework
".NETFramework,Version=v4.0".

물론 해결책은 기본 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 상단 탭 "응용 프로그램"을 선택한 다음 대상 프레임 워크 버전을 하위 프로젝트와 일치하는 상위 버전으로 변경하는 것입니다.

Visual Studio 2015를 사용하면이 문제를 조용히 포함하는 솔루션을 완전히 구축하고 실행할 수 있습니다. 문제를 요구하고 있습니다 ..!


2

IIS에서 사이트 속성을 확인할 수도 있습니다. IIS에서 사이트를 마우스 오른쪽 단추로 클릭하고 속성을 선택하십시오. 실제 경로 설정이 다른 응용 프로그램이 아닌 응용 프로그램의 올바른 경로를 가리키는 지 확인하십시오. (이 오류가 해결되었습니다.)


2

방금 MVC5 응용 프로그램 에서이 문제가 발생했지만 아무것도 작동하지 않았습니다. 이것은 SVN을 이전 버전의 프로젝트로 되돌리려 고 시도한 직후에 발생했습니다.

global.asax.cs 를 삭제 한 다음 프로젝트-> 새 항목 추가-> Global.asax를 마우스 오른쪽 버튼으로 클릭하여 새로 추가하고 마지막으로 수정했습니다.

누군가에게 도움이 될 것이라고 생각했습니다.


그래도 문제가 해결되면 기존 global.asax.cs파일 의 "빌드 작업"속성에 문제가있을 수 있습니다. "컴파일"로 설정해야합니다. global.asax파일 자체 의 빌드 조치는 "Content"로 설정되어야합니다.
Steven Liekens

@iAteABug_And_iLiked_it가 한 일을 정확하게 수행했으며 문제가 해결되었습니다!
아연 아연

2

이 게시물에서 적어도 4 개의 제안을 시도했다고보고해야합니다. 그들 중 누구도 일하지 않았습니다. 그러나 백업에서 검색하여 복구했다고보고하게되어 기쁩니다. 로그 파일에서 마지막 코드 변경 사항 만 업데이트하면됩니다. 10 분도 채 걸리지 않았습니다. 이 게시물을 읽고 다른 제안을 시도하는 것의 3 배를 보냈습니다. 죄송합니다.

매우 이상한 오류였습니다. 이 gremlin을 만나는 다른 사람에게 행운을 빕니다.


2

동일한 프로젝트를 실행하는 Visual Studio의 2 인스턴스가있을 때 동일한 문제가 있습니다. 그래서 Visual Studio를 모두 닫고 하나의 인스턴스 만 열었습니다. 지금 제대로 작동합니다!


2

나는 오래된 '폴더 기반'ASP.NET 웹 프로젝트 (내가 싫어하는)에서 일하고 있었고 이것이 내 수정임을 알았습니다.

App_Code폴더를 만듭니다 (아직없는 경우)

Global.asax.vb파일을 App_Code폴더 로 이동

Global.asax의 마크 업은 네임 스페이스를 제거 할 수 있습니다 (적어도이 스타일의 프로젝트에서는 afaik).

<%@ Application Codebehind="Global.asax.vb" Inherits="MyApp" Language="VB" %>

"MyApp"은 Global.asax.vb에 정의 된 클래스의 이름입니다.


2

"BUILD-> CONFIGURATION MANAGER 및-ahem-프로젝트 옆에있는 상자를 선택하여 실제로 빌드되는지 확인하십시오." Windows 탐색기에서 프로젝트 폴더로 이동하여 옵션을 누르고 "읽기 전용"확인란을 선택 취소하면 도움이됩니다.


단순히 그것은 나를 위해 일했다. 프로젝트에 옵션이 활성화되어 있지 않은 이유는 모르겠지만이 해결 방법이 필요한 것입니다. 감사합니다.
willyMon


1

나도 같은 문제에 직면했다. 모든 답변을 따랐음에도 불구하고 작동하지 않았습니다. 그런 다음 "Inherits = namespace.class "를 "Inherits = 정규화 된 어셈블리 이름 "으로 변경했습니다. 즉 "Inherits = namespace.class, assemblyname, Version =, Culture =, PublicKeyToken = "도움이 되길 바랍니다.


1

동일한 솔루션에서 Web 및 WebApi를 실행하는 경우 실수로 VS 솔루션을 "다중 시작 프로젝트"로 설정하는 것을 잊어 버린 경우에도 발생할 수 있습니다.

솔루션 탐색기에서 솔루션을 마우스 오른쪽 버튼으로 클릭하고 '속성'을 선택한 다음 '시작 프로젝트'를 찾으십시오.


광산은 이것과 비슷했습니다. 솔루션에서 잘못된 API 프로젝트를 실행 중이었습니다. 실제로 내가 실행 중이라고 생각한 API에 컴파일러 오류가 있었지만 VS를 청소 한 후에도 솔루션을 실행했을 때 그것을 찾지 못했습니다.
John

1

.vs솔루션 루트에서 디렉토리를 삭제하십시오 . 깨끗한. 재건하십시오.

이 문제로 인해 잠시 동안 본 커가 생겨 났고 필연적으로 답변을 통해 페이징을 끝냈습니다. 나는이 예외를 일으킬 수있는 여러 가지 원인이 있다고 생각합니다. 이것은 한 번 나에게 효과적입니다.


수천 가지의 다른 제안을 시도하는 데 몇 시간이 걸렸으며 이것이 나를 위해 한 제안입니다. 내 응용 프로그램은 디버그 및 릴리스 구성 모두에서 Visual Studio에서 정상적으로 실행되었지만 IIS에 게시되면 오류가 발생했습니다. .vs 폴더를 삭제하고 다시 배포하면 문제가 해결되었습니다.
Philip Stratford

1

네, 모든 답을 읽었습니다. 그러나 당신이 나와 머리에 남은 것을 모두 뽑아 냈다면 \ bin 폴더를 확인하십시오. 대부분의 proj 파일이 XML 요소 아래에 여러 구성을 그룹화 한 것처럼 '\\ Debug'부분을 제거하고 다시 빌드하기 위해 값을 'bin \ Debug'에서 PropertyGroup변경했습니다 OutputPath. 이렇게하면 Express IIS가 빌드를 찾아로드 할 수 있도록 파일을 \ bin 폴더에 배치했습니다. 로컬 디버그 배포가 대상 환경을 찾고로드 할 수 있도록 이러한 다른 빌드를 관리하는 올바른 방법이 무엇인지 궁금합니다.


이것이 유일하게 작동 한 것입니다. 묻힌 시체가 너무 많아서 다른 직업을 진지하게 고려하게 만드는 것은 이런 것들입니다.
doveryai

0

이 문제는 폴더에 대한 올바른 권한을 부여하고 IIS에서 확인하여 해결되었습니다.

지역 환경에서 테스트 할 때 모든 사람에게 권한이 부여되었습니다. 그러나 게시 모드에서는 ASP.Net 사용자에게만 권한을 부여한다고 생각합니다.


0

또한 같은 오류가 발생했습니다 ... 제대로 개발 한 응용 프로그램의 이름을 확인하십시오. 할당 된 네임 스페이스 및 어셈블리 이름과 응용 프로그램 용으로 생성 된 폴더의 이름을 물리적으로 변경해보십시오.이 모든 것은 전역 파일에 존재하는 위 네임 스페이스의 이름과 같아야합니다.


0

또한 동일한 오류가 발생했습니다 ... 가상 디렉토리의 IIS 구성을 확인하고 속성-ASP.NET-ASP.NET 버전이 프로젝트 속성-응용 프로그램-대상 프레임 워크와 동일한 지 확인하십시오. (이 오류가 해결되었습니다.)


0

내 앱은 이전 버전의 VS에서 빌드되었으며 bin 폴더가 없습니다. 나는 그것을 새로운 버전으로 업그레이드했고, 그것을 배치하는 악몽이있었습니다. 마침내이 오류를 프로젝트> 속성> 응용 프로그램으로 추적했습니다. 대상 프레임 워크는 2.0으로 설정되었습니다. IIS 관리자 / 응용 프로그램 풀에서 일치하도록 서버에서 변경하면 문제가 해결되었습니다.


0

전체 솔루션에서 리팩터링하지 않고 프로젝트에서 네임 스페이스를 변경하는 것이 내 문제라는 것을 알았습니다. 프로젝트 속성을 확인하고 네임 스페이스가 무엇인지 확인하십시오.


0

문제는 프로젝트에 global.asax.cs를 포함시키지 않았다는 것입니다. 그리고 .net 4.5에서 4.0으로 파일을 복사했기 때문에 4.0에 필요하지 않은 행은 주석 처리하지 않았습니다. Visual Studio는 포함되지 않았기 때문에 문제없이 컴파일했습니다. 그러나 그것을 포함 시키면 문제를 일으키는 선을 강조했습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//using System.Web.Http;
using System.Web.Mvc;
//using System.Web.Optimization;
using System.Web.Routing;

namespace YourNameSpace
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            //GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

0

나는 이것을 해결하기 위해 말 그대로 하루를 보냈다.

.sln 파일을 삭제하고 새 파일을 만든 다음 프로젝트를 하나씩 다시 추가하는 것이 유일한 방법이었습니다.

¯ \ _ (ツ) _ / ¯-프로그래밍-¯ \ _ (ツ) _ / ¯


0

필자의 경우 웹 어셈블리는 GAC의 일부였습니다. 따라서 빌드 후 GAC에 설치해야 작동했습니다.


0

이 오류 메시지가 발생하여 결국 오류 메시지가 잘못되었다는 것을 발견했습니다. 필자의 경우 웹 서버의 다른 사이트에서 global.asax를 읽고 오류를 발생시키는 IIS에서 라우팅 문제가 발생한 것으로 보입니다.

IIS에서 내 사이트는 http : * 80 : webservices.local에 바인딩되었고 MyAPI라는 응용 프로그램이 포함되었습니다. 웹 서버의 IP 주소를 사용하여 MyAPI 응용 프로그램을 호출 할 때 두려운 메시지를 받았습니다.

내 응용 프로그램을 성공적으로 호출하려면 MyAPI 응용 프로그램을 호출 한 모든 컴퓨터에서 webservices.local에 대한 호스트 파일 항목을 추가해야했습니다. 그런 다음 올바르게 라우팅하려면 모든 요청에 http : //webservices.local/MyAPI/ 접두사가 있어야합니다.


0

나는 여기에서 모든 것을 시도했지만 아무것도 효과가 없었습니다. 내 프로젝트는 VS 2013에있었습니다. 그 후 VS 2015로 업그레이드 한 후 2015 년에 모든 새 응용 프로그램을 만들었지 만 2013 년에 해당 버전으로 빌드 된 모든 이전 응용 프로그램을로드, 컴파일, 빌드 등을 수행했습니다.

2015 년에 솔루션을로드 한 결과 해결되었습니다.


0

이 문제에 며칠을 보냈습니다. 마침내이 게시물의 다음 제안 조합으로 해결되었습니다.

  1. 플랫폼 대상을 모든 CPU로 변경하십시오. 현재이 구성이 없었으므로 구성 관리자로 이동하여 추가해야했습니다. x64를 위해 특별히 컴파일하고있었습니다. 이것만으로는 오류가 해결되지 않았습니다.
  2. bin\대신 출력 경로를로 변경하십시오 bin\x64\Debug. 플랫폼 대상을 변경하기 전에 이미 여러 번 시도했습니다. 형식이 잘못되어 어셈블리를로드하지 못했다는 오류를 얻는 것 외에는 차이가 없었습니다.

분명히하기 위해, 나는 작동하기 전에 두 가지를 모두 수행해야했습니다. 나는 개별적으로 여러 번 시도했지만 두 가지를 모두 할 때까지는 결코 수정하지 않았습니다.

이러한 설정 중 하나를 원래 설정으로 다시 변경하면 Clean Solution을 실행하고 bin디렉토리의 모든 항목을 수동으로 삭제하더라도 동일한 오류가 다시 발생합니다 .


0

이것을 얻는 두 가지 방법 :

  • 구성 관리자는 dll 빌드를 '64'와 'any cpu'빌드의 혼합으로 표시합니다. 그것들을 모두 같은 빌드에두면 문제가 해결됩니다.

  • 분기 간을 전환 할 때 IIS Express 경로가 업데이트되지 않는 경우가 있습니다. 작업 표시 줄에서 'IIS Express'를 마우스 오른쪽 단추로 클릭> 모든 응용 프로그램 표시 및 경로가 올바른 분기인지 확인하십시오.

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