[C#] Web API 2 및 .NET 4.5.1 마이그레이션 후 GlobalConfiguration.Configure ()가 없습니다.

최근 에이 가이드 를 따라 프로젝트를 .NET 4.5.1 및 Web Api 2로 마이그레이션 하기 시작했습니다 .

MS 개발자 Rick Anderson이 가장 먼저 요구하는 것은 변경입니다.

WebApiConfig.Register(GlobalConfiguration.Configuration);

GlobalConfiguration.Configure(WebApiConfig.Register);

global.asax 파일에서. 그러나 이것은 내가 빌드하려고 할 때 오류가 발생합니다.

오류 1 ‘System.Web.Http.GlobalConfiguration’에 ‘Configure’에 대한 정의가 없습니다.

내 프로젝트는 현재 MVC 5 및 Web Api 2 및 .NET 4.5.1에 ​​있지만 System.Web.Http는 여전히 .NEt 4.0 버전이라고 생각합니다.

이 문제를 해결하려면 어떻게해야합니까?

감사합니다.

편집하다:

다음은 어셈블리 바인딩입니다.

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
  </dependentAssembly>
  <!--
  <dependentAssembly>
    <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="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly> -->
</assemblyBinding>

오류가 발생하여 상단이 주석 처리 된 후 주석 처리 된 모든 내용 :

경고 2 확인할 수없는 동일한 종속 어셈블리의 서로 다른 버전간에 충돌이 발견되었습니다. 이러한 상세 충돌은 로그 상세가 상세로 설정된 경우 빌드 로그에 나열됩니다.

그리고 단단한 바인딩을 제거하는 것은 그것을 고치는 것이 었습니다.



답변

이 패키지의 일부인 system.web.http.webhost가 필요합니다. 다음 패키지를 설치하여이 문제를 해결했습니다.

PM> Install-Package Microsoft.AspNet.WebApi.WebHost 

또는 nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0 에서 검색 하십시오.


답변

이 아이디어 중 어느 것도 MVC 5.2.2를 사용하는 프로젝트에 도움이되지 않았습니다.

  • System.web.Http 5.2.2가 이미 설치되었습니다
  • 패키지 폴더를 삭제하고 모든 NuGet 라이브러리를 완전히 다시 다운로드해도 아무 효과가 없습니다.
  • Web.config에는 System.Web.Http에 대한 dependentAssembly 항목이 이미 있습니다.

다시 설치하면 문제가 해결되었습니다. NuGet 패키지 관리자 콘솔에서 :

update-Package -reinstall Microsoft.AspNet.WebApi.WebHost


답변

GlobalConfiguration클래스는 Microsoft.AspNet.WebApi.WebHost너겟 패키지의 일부입니다 …이 패키지를 Web API 2로 업그레이드 했습니까?


답변

패키지 관리자 콘솔을 사용하여
누락 된 GlobalConfiguration에 대해 Install-Package Microsoft.AspNet.WebApi.WebHost 로 프로젝트를 업데이트하기 위해 nuget을 얻습니다 .

System.Web.Http를 사용하여 누락 된 Install-Package Microsoft.AspNet.WebApi.SelfHost가 필요했습니다 .


답변

프로젝트가 Microsoft.AspNet.WebApi.WebHost설치 되었는지 확인할 수 있습니다 . 내 경우 Microsoft.AspNet.WebApi.WebHost에는 다른 프로젝트에 설치되었지만 필요한 특정 프로젝트에는 설치되지 않았습니다. packages.config에서 다음과 같은 행이 있는지 확인하십시오.

<package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.1" targetFramework="net45" />

존재하지 않으면 Microsoft.AspNet.WebApi.WebHost프로젝트에 설치 되지 않은 것 입니다. Nuget 패키지 관리자를 사용하거나 패키지 관리자 콘솔을 통해 설치할 수 있습니다. 패키지 관리자 콘솔에서 설치하려면 다음 명령을 실행하십시오.

Install-Package Microsoft.AspNet.WebApi.WebHost


답변

GlobalConfiguration.Configure API는 “Microsoft.AspNet.WebApi.WebHost”version = “5.2.3”에서 사용 가능합니다.

“Microsoft.AspNet.WebApi.WebHost”버전 = “4.0.0”에는 없습니다.


답변

Microsoft.AspNet.WebApi.WebHost를 제거하고 설치 한 후에도 문제가 지속되면 web.config에 다음을 추가하여 전역 구성이 작동하도록하십시오

 <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.0.0" />
      </dependentAssembly>