Recentemente, comecei a seguir este guia para migrar meu projeto para o .NET 4.5.1 e o Web Api 2.
A primeira coisa que o desenvolvedor do MS, Rick Anderson, pede que você faça é mudar:
WebApiConfig.Register(GlobalConfiguration.Configuration);
para
GlobalConfiguration.Configure(WebApiConfig.Register);
no arquivo global.asax. No entanto, isso está me dando um erro quando tento criar:
Erro 1 'System.Web.Http.GlobalConfiguration' não contém uma definição para 'Configurar'
Atualmente, meu projeto está no MVC 5 e na Web Api 2 e .NET 4.5.1, mas acho que o System.Web.Http ainda acha que é a versão .NEt 4.0.
Como posso resolver isso?
Obrigado.
Editar:
Aqui estão as minhas ligações de montagem:
<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>
Tudo o que foi comentado após o topo foi comentado porque eu estava recebendo o erro:
Aviso 2 Foram encontrados conflitos entre versões diferentes do mesmo assembly dependente que não puderam ser resolvidos. Esses conflitos de referência são listados no log de construção quando a verbosidade do log é definida como detalhada.
e se livrar das amarras era consertar isso.
fonte
Microsoft.AspNet.Web.Helpers.Mvc
primeiro?Respostas:
Ele precisa do sistema.web.http.webhost que faz parte deste pacote. Corrigi isso instalando o seguinte pacote:
ou procure-o no nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0
fonte
GlobalConfiguration.Configure(WebApiConfig.Register);
Alterei a ordem em que o arquivo foi inserido no global.asax para o topo logo após o AreaRegistration e funcionou bem.Microsoft.AspNet.WebApi.WebHost
para a versão mais recenteNenhuma dessas idéias ajudou meu projeto usando o MVC 5.2.2.
Forçar uma reinstalação corrigiu o problema. No console do gerenciador de pacotes NuGet:
update-Package -reinstall Microsoft.AspNet.WebApi.WebHost
fonte
GlobalConfiguration
classe faz parte doMicrosoft.AspNet.WebApi.WebHost
pacote nuget ... Você atualizou este pacote para Web API 2?fonte
Além de usar o console do gerenciador de pacotes para obter um nuget para atualizar o projeto com o pacote de instalação Microsoft.AspNet.WebApi.WebHost por falta de configuração global ,
Eu precisava do Install-Package Microsoft.AspNet.WebApi.SelfHost por falta de uso System.Web.Http;
fonte
Você pode querer verificar se o seu projeto foi
Microsoft.AspNet.WebApi.WebHost
instalado. Como se vê, no meu caso,Microsoft.AspNet.WebApi.WebHost
foi instalado em outro projeto, mas não no projeto específico que precisava dele. No seu packages.config, verifique se existe uma linha como esta:Se isso não estiver presente, você não tem
Microsoft.AspNet.WebApi.WebHost
instalado no seu projeto. Você pode instalar usando o Nuget Package Manager ou através do Console do Package Manager. Para instalar a partir do Console do Gerenciador de Pacotes, execute este comando:fonte
A API GlobalConfiguration.Configure está disponível em "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"
e não em "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"
fonte
Se o problema persistir após a desinstalação e instalação do Microsoft.AspNet.WebApi.WebHost, adicione também os seguintes itens no web.config para que a configuração global funcione
fonte
"Instalar o pacote Microsoft.AspNet.WebApi.Core" funcionou perfeitamente.
fonte
Meu problema era que o gerenciador de pacotes nuget não fez uma atualização real, mas os arquivos continham referências a versões mais antigas, então removi primeiro todos os pacotes relacionados ao mvc instalados (incluindo razor e web api) e depois os instalei novamente e atualizando a versão do o razor em views / web.config para a versão 3.0.0.
fonte
Nenhuma dessas soluções funcionou para mim. Eu tinha um emaranhado de pacotes Nuget que não puderam ser atualizados devido a dependências circulares entre si.
Eu teria que consertar isso da maneira antiga. Criei um novo projeto MVC / API API e copiei manualmente
System.Web.Http
eSystem.Web.Http.WebHost
do novo projeto para as pastas Nuget da solução existente. A partir daí, atualizei as referências, OMG, "navegando" e resolvi o problema.fonte
isso resolveu esse problema adicionando namespace ao arquivo Global.asax.cs.
using System.Web.Http;
isso resolveu o problema.
fonte