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


148

최근 에이 가이드 를 따라 프로젝트를 .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 확인할 수없는 동일한 종속 어셈블리의 서로 다른 버전간에 충돌이 발견되었습니다. 이러한 상세 충돌은 로그 상세가 상세로 설정된 경우 빌드 로그에 나열됩니다.

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


1
먼저 제거 했습니까 Microsoft.AspNet.Web.Helpers.Mvc?
Blaise

내 대답을보십시오 stackoverflow.com/a/20653546/3114457 마이그레이션 문제를 해결해야합니다
Livius

5
stackoverflow.com/a/21514748/2343 을 정답으로 표시 하십시오!
Sameer Alibhai

답변:


271

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

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

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


API 컨트롤러를 추가하면 자동으로 추가되었습니다. VS2015를 다시 시작해야했습니다. 또한이 페이지에서 권장되는 다른 모든 것을 수행 했으므로 실제 문제가 무엇인지 확실하지 않습니다.
Piotr Kula

6
그것은 나를 위해 작동하지 않았다. 패키지가 이미 프로젝트에 설치되어 있습니다.
Shimmy Weitzhandler

흥미로운 점은 웹 호스트가 이미 설치되어 여전히 작동하지 않는다는 것인데 GlobalConfiguration.Configure(WebApiConfig.Register);, global.asax에 삽입 된 순서를 AreaRegistration 직후에 맨 위로 변경하면 제대로 작동 합니다.
PedroSouki

왜 그런 식으로 글을 쓰지 않았습니까? 답변을 찾는 데 30 분 정도 걸립니다.
Homayoun Behzadian

Microsoft.AspNet.WebApi.WebHost최신 버전으로 업데이트 한 후 나를 위해 일했습니다
Peter van Kekem

86

이 아이디어 중 어느 것도 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


1
나는 같은 문제가 있었지만 다시 설치하면 문제가 해결되지 않았습니다. 적어도 그 모양이었고 견딜 수 없었습니다 .VS2015를 다시 시작해야했습니다.
Piotr Kula

재시작 vs2013 + 재설치의 조합으로 문제가 해결되었습니다
Ram

43

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


1
예. 버전 5.0.0
nzondlo

1
web.config에 어셈블리 바인딩 리디렉션이 있습니까? 그렇다면, 공유 할 수 있습니까? 특히 System.Web.Http * 어셈블리와 관련된 것이 있는지 찾고 있습니다.
Kiran Challa

방금 모든 어셈블리 바인딩을 게시했습니다.
nzondlo

30

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

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


1
좀 더 설명해 주시겠습니까?
Dieter Meemken

10

프로젝트가 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

5

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

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


3

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>

이것은 이미 내 web.config에있었습니다. 여전히 문제가 있음 (VS2015)
Piotr Kula


1

내 문제는 nuget 패키지 관리자가 실제 업데이트를 수행하지 않았지만 파일에 이전 버전에 대한 참조가 포함되어 있기 때문에 먼저 설치된 모든 mvc 관련 패키지 (면도기 및 웹 API 포함)를 제거한 다음 다시 설치하고 버전을 업데이트했습니다. views / web.config의 면도기 버전 3.0.0.


1

이 솔루션들 중 어느 것도 나를 위해 일하지 않았습니다. 서로에 대한 순환 종속성으로 인해 업데이트 할 수없는 Nuget 패키지가있었습니다.

나는 이것을 구식으로 고쳐야 할 것입니다. 나는 새로운 MVC / 웹 API 프로젝트를 생성하고 수동으로 복사 System.Web.Http하고 System.Web.Http.WebHost새 프로젝트에서 대한 기존 솔루션의 Nuget 폴더에. 거기에서 OMG "참조"를 통해 참조를 업데이트하고 문제를 해결했습니다.


0

Global.asax.cs 파일에 네임 스페이스를 추가하여이 문제를 해결했습니다.

System.Web.Http 사용;

이것은 문제를 해결했다.

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