파일 또는 어셈블리 'System.Web.Mvc'를로드 할 수 없습니다


200

새로운 ASP.NET MVC 웹 응용 프로그램은 개발 워크 스테이션에서 작동하지만 웹 서버에서는 실행되지 않습니다 ...


'/'응용 프로그램에 서버 오류가 있습니다.


구성 오류

설명 : 이 요청을 처리하는 데 필요한 구성 파일을 처리하는 중에 오류가 발생했습니다. 아래의 특정 오류 세부 사항을 검토하고 구성 파일을 적절하게 수정하십시오.

파서 오류 메시지 : 파일 또는 어셈블리 'System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.

소스 오류 :

Line 44:         <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45:         <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46:         <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47:         <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48:         <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

소스 파일 : C : \ inetpub \ www.example.org \ web.config 라인 : 46

어셈블리로드 추적 : 다음 정보는 'System.Web.Mvc, 버전 = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' 어셈블리를로드 할 수없는 이유를 확인하는 데 도움이 될 수 있습니다.

WRN : 어셈블리 바인딩 로깅이 꺼져 있습니다.
어셈블리 바인드 실패 로깅을 사용하려면 레지스트리 값 [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD)를 1로 설정하십시오.
참고 : 어셈블리 바인드 실패 로깅과 관련하여 일부 성능 저하가 있습니다.
이 기능을 끄려면 레지스트리 값 [HKLM \ Software \ Microsoft \ Fusion! EnableLog]를 제거하십시오.

버전 정보 : Microsoft .NET Framework 버전 : 2.0.50727.3053; ASP.NET 버전 : 2.0.50727.3053


서버에 AspNetMVCBeta-setup.msi 를 설치해야 합니까? 아니면 다른 서버용 설치 프로그램이 있습니까?

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

답변:


215

방금이 문제를 해결하는 블로그 게시물을 작성했습니다. 서버에 ASP.NET MVC를 설치하거나 여기단계를 수행 할 수 있습니다 .


편집 : (jcolebrand에 의해) 나는이 링크를 통과 한 다음 아래 Victor 와 같은 문제가 있었으므로 다음을 추가하는 것이 좋습니다.

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

6
참고 : MVC4 (현재 베타)를 설치 한 경우 해당 DLL의 v1.0을 가져 오려면 System.Web.Helpers도 가져와야합니다 (적어도 필요합니다).
트래커 1

1
-1 귀하가 링크 한 게시물에는 게시 메커니즘을 통해 Microsoft.Web.Infrastructure를 웹 서버에 가져 오는 방법이 설명되어 있지 않습니다. 서버에 직접 설치 해야하는 일종의 sux.
Mark Rogers

1
여기에 설명 된대로 비주얼 스튜디오 2010이 훨씬 쉬워졌습니다 : britishdeveloper.co.uk/2011/06/...
다니엘 TULP

또는 Web Deploy를 사용하지 않는 경우 britishdeveloper.co.uk/2011/05/…
Jeroen K

bin 폴더를 연결 한 다음 다시 게시, 즉 패키지 배포를 사용하지 않는 경우 다시 게시해야했습니다.
Robert Koch

41

나는 sgriffinusa와 같은 문제에 부딪쳤다. Phil의 기사 외에도 http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx를 참조하십시오 . 나는 이것을 추가했다 :

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

GoDaddy 배포는 완벽하게 작동했습니다. 사용자 정의 오류를 끄고 참조를 추가하여 오류를 수정하십시오. 올바른 방향으로 인도해야합니다.


26

웹 서버에 직접 MVC를 설치하는 것이 하나의 옵션입니다. 어셈블리는 GAC에 설치됩니다. 어셈블리를 빈으로 배포 할 수도 있습니다. 이렇게하면 최종 릴리스가 제공 될 때까지 서버가 시험판 어셈블리를 제거하는 데 도움이 될 수 있습니다.

Phil Haack은 며칠 전에 앱과 함께 MVC를 배포하는 방법에 대한 멋진 기사를 게시 했으므로 직접 설치할 필요가 없습니다.

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx


25

GoDaddy 공유 호스팅에 MVC3 Razor 웹 응용 프로그램을 배포하려고하는 것과 동일한 문제가 발생했습니다. 참조해야 할 추가 .dll이 있습니다. 자세한 내용은 여기 : http://paulmason.biz/?p=108

기본적으로 @Haacked의 게시물에 나열된 것 외에도 다음에 대한 참조를 추가하고 설명에 따라 로컬로 배포하도록 설정해야합니다.

  • Microsoft.Web. 인프라
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor

고맙습니다. 참조를 수동으로 추가 한 다음 로컬로 배포하면 MVC3의 문제가 해결되었습니다!
Stefanvds

여기도 마찬가지입니다. 추가 DLL 추가에 대한 유용한 지침. 감사!
Mike L

여기도 마찬가지입니다. GoDaddy가 아니라 회사 서버에 있기 때문에 이는 단순한 제네릭 사건이어야합니다.
TJKjaer

13

VS2010의 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 '배포 가능한 종속성 추가'를 선택하십시오. 그런 다음 다음 대화 상자에서 MVC 관련 확인란을 선택하십시오.

이것은 다른 답변에서 언급 된 모든 .dll 파일을 포함하는 '_bin_deployableAssemblies'폴더를 프로젝트에 만듭니다. 배포 패키지를 만들 때 bin 폴더에 복사된다고 생각합니다.


9

간단한 수정. VS2010에서 MVC 프로젝트를 마우스 오른쪽 단추로 클릭하고 "배포 가능한 종속성 추가 ..."를 선택한 다음 원하는 옵션을 선택하고 확인을 클릭하십시오.


8

빠르고 간단한 솔루션 : Microsoft.AspNet.Mvc -Version 5.2.3 에서이 문제에 직면 했으며이 모든 스레드를 거친 후 가장 간단한 해결책을 찾았습니다.

다음 단계를 따르십시오.

  1. 프로젝트를 위해 Visual Studio에서 NuGet Package Manager를 엽니 다.
  2. Microsoft.AspNet.Mvc를 검색하십시오.
  3. 발견되면 조치를 설치 제거 및 설치 제거로 변경하십시오.
  4. 완료되면 다시 설치하고 지금 시도하십시오

이렇게하면 참조와 관련된 모든 문제가 자동으로 해결됩니다. 아래 이미지를보십시오 :

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


7

같은 문제가 있었고 그들이 말한 모든 어셈블리를 추가했지만 여전히 같은 오류가 발생했습니다.

" Specific Version "= False 를 만들어야합니다 .

특정 버전은 거짓이어야합니다.


또는 '로컬 복사'가 활성화되어 있지 않으면 '로컬 복사'를 '참'으로 전환해야합니다.
AStopher

6

우리는 그것을 사용하는 클래스 라이브러리를 만들고 있기 때문에 그것을 추가하고 싶습니다.

나를 위해 여기 있습니다 ...

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies



3

Hanselman은 Haack 게시물 외에도 유사한 게시물을 보유하고 있습니다. BIN MVC가 설치되지 않은 Windows Server에 Razor가 포함 된 ASP.NET MVC 3 배포

내 웹 사이트의 프로젝트 참조에 누락 된 모든 dll이 포함되어 있지 않기 때문에 "Copy Local = true"솔루션이 충분하지 않았습니다. Scott이 자신의 게시물에서 언급했듯이 개발 상자의 C : \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies 폴더에서 추가 dll을 가져와야했습니다. 오류 메시지에 누락 된 dll (System.Web.Infrastructure, System.Web.Razor 등)이 나올 때까지 누락 된 각 dll을 하나씩 계속 추가했습니다.


3

"Update-Package –Microsoft.AspNet.Mvc를 다시 설치하십시오"를 Visual Studio 2015에서 수정했습니다.


3

중요한 고려 사항은 web.config 파일입니다. 일부 패키지는 혼란을 유발하는 바인딩 리디렉션을 엉망으로 만들 수 있습니다 (불량한 패키지는 패키지에서 web.config를 제거하지 않았거나 패키지에서 web.config를 확인하지 않은 사내 패키지였습니다) 바인딩 리디렉션이 없습니다. 예를 들어 중복 및 잘못된 노드를 제거하면이 문제가 해결됩니다.

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>


                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>


                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

8 ~ 24 행을 제거하면 빌드가 수정됩니다.


2

또한 Views 폴더 의 web.config에서 어셈블리 버전을 확인하고 일치하는지 확인하십시오. 때로는 그 위치에 2nd web.config가 있다는 것을 잊어 버립니다.



2

프로젝트를 다른 솔루션으로 옮긴 후 많은 어셈블리 파일에서 동일한 문제가 발생했습니다.

나에게 web.config파일은이 어셈블리를 추가하려고했습니다.

<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

프로젝트의 참조가 버전을 가리키고 3.0.0.0있다고 생각했습니다 (참조를 클릭하고 속성의 맨 아래로 스크롤하십시오). 따라서 web.config파일 의 참조 버전을 변경했습니다 .

이것이 일종의 버그인지 모르겠습니다. 다른 모든 참조를 추가하는 문제는 참조가 구성 파일에 나타나지만 실제로 솔루션 탐색기 내부의 프로젝트에서 전혀 참조되지 않았으며 필요한 파일이 나머지 프로젝트 파일과 함께 복사되지 않았다는 것입니다. 아마 존재하지 않기 때문에"copy local = true"

이제 추가 가능한 어셈블리에서 이러한 어셈블리를 찾을 수 없었습니다 (참조를 마우스 오른쪽 버튼으로 클릭하고 어셈블리 또는 확장에서 추가하려고 시도 함). 대신 필요한 모든 어셈블리와 참조를 추가 한 새 MVC 솔루션을 만들고 솔루션 탐색기의 새 프로젝트 참조에서 찾은 다음 참조를 위해 속성 창에서 해당 경로를 찾습니다.

그런 다음 방금 필요한 라이브러리를 다른 프로젝트에 복사하여 참조했습니다.


1

모든 것을 시도하고 여전히 실패한 후에는 내 해결책이었습니다. 나는 Visual Studio에서 MVC 버전을 마지막으로 업데이트 했으므로 오류가 발생 했으므로 다른 Visual Studio (다른 컴퓨터)에서 프로젝트를 실행하고 dll-s를 업로드하고 작동했습니다. 어쩌면 누군가를 도울 것입니다 ...


0

Jenkins를 .net 프로젝트와 함께 사용하고 있으며 MVC 4 참조에 문제가 있습니다.

마지막으로 다음을 사용하여 레지스트리를 기반으로 .Net 참조 검색 엔진 기능을 사용하여 문제를 해결했습니다.

"HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx"

하위 키를 만들고 기본 키를 "c : \ myreferenceedir"로 설정할 수 있습니다.

MVC 버전과 ASP.net 웹 페이지로 저를 구했습니다.

"참조 추가 대화 상자"에 참조를 추가하는 데 유용

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/


0

다른 사람들이 언급했듯이이 참조를로 Copy Local설정하여 비주얼 스튜디오에 추가하십시오 true. (나는 또한 추가했다 System.Web.Webpages)

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages

0

Manage NuGet Packages를 사용하여 "Microsoft ASP.NET Razor"를 추가했습니다.

참조 추가를 사용하면 어떤 이유로 든 System.Web.Helpers 1.0.0 및 2.0.0 만 있었지만 3.0.0은 없었습니다.

또 다른 옵션은 System.Web.Mvc 및 System.Web.Http에 대한 참조를 삭제 한 다음 csproj 파일의 패키지 위치를 찾아 다시 추가하는 것입니다 (가장 쉽게 프로젝트를 편집 할 수 있음) 텍스트 편집기) :

<Reference Include="System.Web.Http">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.