[asp.net] 오류 Microsoft.Web.Infrastructure, 버전 = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35

작은 웹 응용 프로그램이 있습니다. 내 응용 프로그램에 두 개의 genericHandler를 추가하기 전까지는 잘 작동했습니다.

http 처리기에 대해 다음과 같이 변경했습니다.

 <system.web>
    <authentication mode="Forms" >
        <forms protection="All" timeout="720" defaultUrl="Default.aspx" loginUrl="Login.aspx" >
        </forms>
    </authentication>
    <authorization>
        <deny users="?"/>
    </authorization>
    <compilation debug="true" targetFramework="4.0" />

    <httpHandlers>
        <!--Code Log Handler-->
        <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
        <add verb="*" type="InfoDomeNewUI.Handler.SendOWA" path="SendOWA.ashx" />
        <add verb="*" type="InfoDomeNewUI.Handler.SendSOS" path="SendSOS.ashx" />
    </httpHandlers>
    <customErrors mode="Off">
        <error statusCode="404" redirect="Templates/PageNotFound.html" />
    </customErrors>
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
        <!--Code Log Handler-->
        <add name="LogHandler1" path="SendOWA.ashx" verb="*" type="InfoDomeNewUI.Handler.SendOWA"/>
        <!-- SMS SENDER-->
        <add name="SendSOS" path="SendSOS.ashx" verb="*" type="InfoDomeNewUI.Handler.SendSOS"/>
    </handlers>
</system.webServer>

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

asp.net4.0 및 C #을 사용하고 있습니다.
로컬 호스트에서 MVC를 사용하고 있지 않습니다
.

그러나 게시 된 코드를 호스팅 할 때 위의 오류가 발생합니다.

스택 추적 :-

[FileNotFoundException : 파일 또는 어셈블리 ‘Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35’또는 해당 종속성 중 하나를로드 할 수 없습니다. 지정한 파일을 찾을 수 없습니다.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register () +0

[InvalidOperationException : System.Web.Http.WebHost.PreApplicationStartCode 유형의 사전 응용 프로그램 시작 초기화 메서드 시작에서 다음 오류 메시지와 함께 예외가 발생했습니다. 파일 또는 어셈블리를로드 할 수 없습니다. ‘Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ‘또는 해당 종속성 중 하나입니다. 시스템이 지정된 파일을 찾을 수 없습니다.] System.Web.Compilation.BuildManager.InvokePreStartInitMethods (ICollection`1 메서드) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465 System.Web.Hosting.HostingEnvironment.Initialize ( ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLeve

[HttpException (0x80004005) : System.Web.Http.WebHost.PreApplicationStartCode 유형의 사전 응용 프로그램 시작 초기화 메서드 시작에서 다음 오류 메시지와 함께 예외가 발생했습니다. 파일 또는 어셈블리를로드 할 수 없습니다. ‘Microsoft.Web.Infrastructure, Version = 1.0 .0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ‘또는 해당 종속성 중 하나. 시스템이 지정한 파일을 찾을 수 없습니다.] System.Web.HttpRuntime.FirstRequestInit (HttpContext 컨텍스트) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext 컨텍스트) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, HttpContext 컨텍스트) +4866485



답변

것으로 보인다 Microsoft.Web.Infrastructure.dll은 윈도우 서버에 성공적으로 설치에도 (4.0 또는 4.5 또는 다른) .NET 경우 GAC에 설치되지 않습니다. localhost (일반적으로 Windows 클라이언트)에서는 도구 / 플랫폼 (Visual Studio 등)이 설치 될 때 GAC에있는 것처럼 보입니다.

가능한 한 가지 해결 방법으로 다음을 시도하십시오.

  1. 패키지 관리자 콘솔에서 다음 명령을 실행합니다. (Visual Studio를 사용하는 경우 “도구-> 라이브러리 패키지 관리자-> 패키지 관리자 콘솔 🙂 메뉴 옵션을 통해 액세스 할 수 있습니다.

    PM> Install-Package Microsoft.Web.Infrastructure

    성공적으로 설치되면 다음 메시지가 표시됩니다.

    Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'.
    Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
  2. Microsoft.Web.Infrastructure.dll 이 이제 참조로 추가되었음을 알 수 있습니다 (솔루션 탐색기에서 프로젝트의 참조 폴더에서 볼 수 있음).

  3. 이 참조의 속성을 보면 ” Copy Local “이 기본적으로 ” True “로 설정되어 있음을 알 수 있습니다.

  4. 이제 프로젝트를 “게시”하면 Microsoft.Web.Infrastructure.dll 이 배포됩니다.


답변

WPI를 통해 MVC4를 설치했는데 도움이되었습니다.


답변

나는 같은 문제가 있었다. 수락 된 답변 (rockyb)을 시도했을 때 패키지가 이미 설치되어 프로젝트에 할당되었다는 메시지를 받았습니다. 그러나 참고 문헌 목록을 확인했을 때 참조되지 않았습니다.

내 솔루션의 패키지 폴더에 Microsoft.Web.Infrastructure가 설치되었습니다. NuGet을 사용하여 패키지를 추가하는 대신 참조 추가 옵션을 사용했습니다. 팝업 창의 왼쪽에서 찾아보기를 선택한 다음 창 하단의 찾아보기 버튼을 눌렀습니다. 내 솔루션이있는 폴더 아래의 packages 폴더로 이동 한 다음 … \ mysolution \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40으로 드릴 다운하고 Microsoft.Web.Infrastructure를 클릭했습니다. .dll. 확인을 클릭하면 패키지가 내 참조 목록에 나타납니다. 웹 배포 패키지 옵션을 사용하여 웹 사이트를 배포했는데 모든 것이 작동했습니다.


답변

Microsoft.Web.Infrastructure.dll 파일을 서버 BIN 폴더에 수동으로 복사하지 마십시오. 이것은 작동합니다. 내 프로젝트는 VS2010 웹 사이트입니다.

이 파일은 다음 위치에 있습니다.

C : \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40

BIN 폴더에 복사하여 붙여 넣으십시오.

아직 가지고 있지 않다면 web.config에 포함시켜야 할 것입니다.

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </assemblies>
</compilation>

참조 : http://thedeveloperblog.com/


답변

나는 문제를 발견했다. (.cs)실수 로 클래스 파일 을 추가하는 대신 Web API Controller솔루션에 구성 파일을 추가하는 클래스를 추가했습니다. 그리고 그 구성 파일은 언급 된 DLL (Microsoft.Web.Infrastructure 1.0.0.0)을 찾고있었습니다. 해당 파일을 제거하고 응용 프로그램을 정리 한 다음 게시하면 작동했습니다.


답변

Microsoft.Web.Infrastructure를 설치 한 후 Nuget-Package Manager

PM> Install-Package Microsoft.Web.Infrastructure

웹 애플리케이션 Microsoft.Web.Infrastructure.dllNuget-Package폴더에서 수동으로 복사 한 다음 웹 서버에 배포 된 웹 애플리케이션의 bin 폴더에 붙여 넣습니다.

packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 \ Microsoft.Web.Infrastructure.dll

그것은 나를 위해 일했습니다.


답변

Update-Package -reinstall Microsoft.Web.Infrastructure 이미 설치되었다는 오류가 계속 발생했기 때문에 작동하지 않았습니다.

패키지 폴더에서 Microsoft.Web.Infrastructure.1.0.0.0 폴더 로 이동하여 해당 폴더를 수동으로 삭제해야했습니다.

이렇게 한 후 실행하여 Install-Package Microsoft.Web.Infrastructure설치했습니다.

참고 : CopyLocal자동으로 true로 설정되었습니다.