Closed tiago-alves closed 7 years ago
Thiago entendo sua colocação, mas não é objetivo deste projeto dar suporte a versões antigas do .Net, inclusive o projeto se perceber é compatível com .Net Core o que permite ser usados em ambiente Linux. Quanto a usar em projetos inferior ao .Net 4.6, fica a cargo do usuário baixar o projeto e instalar.
Obrigado pela resposta Rodrigo. Entendo sua colocação, apesar de discordar. Compilar uma biblioteca com uma versão inferior do .NET, não está ligado a "dar suporte a versões antigas do .NET". A versão de linkagem está relacionado à versão mais antiga que possui os recursos para executar aquele código. A versão 4.6.2, por exemplo, já está disponível. Caso o projeto seja atualizado, todos os desenvolvedores que possuem um projeto hoje em 4.6.1 e fizerem atualização via Nuget, terão um build quebrado. Mas, obrigado pela atenção e parabéns pelo projeto. Abs
Aproveitando a issue já aberta... estou tendo um tanto de dificuldade aqui em adequar algumas versões, desde quinta-feira agarrado nisso. Se puderem me ajudar serei eternamente grato.
O que acontece é que a biblioteca depende do System.Net.Http 4.1.0.0, ao incluir esta dependência no meu projeto WebApi 2.0 passo a ter uma variedade de problemas, de conflitos de versões e tal. Principalmente os dois abaixo:
Sei que não diretamente ligado ao Iugu, mas se puderem me ajudar, certamente outras pessoas passaram ou passarão por isso na integração.
Buscando sobre estes erros, os dois, parecem ser relacionados a versão 4.1.0.0 do Http...
Ok. Consigo forçar a barra para funcionar, incluindo na minha WebApi um bindingRedirect ou coisa do tipo. Mas ai oque acontece é que o iugu para o processamento nos métodos SendRequestAsync e SetContent. Na linha await SetContent(data, requestMessage);
ele chama SetContent, que acontece sem problemas, mas em seguida não continua para a linha do SendAsync.
Conseguem me dar alguma luz?
Tentou instalar a dependencia?
Install-Package System.Security.Cryptography.X509Certificates
Provavelmente isso resolva o problema, caso resolva avisa pra que force essa dependência no nuspec
Sim sim @rscouto, já fiz isso. Por fim consigo fazer rodar o projeto, mas ai para naquela questão do SetContent, de onde o código não avança.. fica só esperando, não chega ao SendAsync. Alguma ideia?
Há sim @TiagoGouvea,
Isso provavelmente aconteceu porque vovê está recriando o HttpRequestMessage, nas versões mais atuais do Asp.Net isso provoca essa exception. Tive esse problema a algum tempo atrás. Segue abaixo a solução:
var SEU_OBJETO_HTTP_MESSAGE = new HttpRequestMessage(HttpMethod.Post, "URL_QUALQUER");
// Toda sua logica de criação
var content = await Task.FromResult(JsonConvert.SerializeObject(OBJETO_DO_POST)).ConfigureAwait(false);
requestMessage.Content = new StringContent(content, Encoding.UTF8, "application/json");
var response = await client.SendAsync(SEU_OBJETO_HTTP_MESSAGE).ConfigureAwait(false);
// Lembre-se de adicionar os HEADERS e tudo mais no HTTPCLIENT e não no HTTPMESSAGE como algumas pessoas faziam antes.
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("URL_QUALQUER");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var jsonContent = await Task.FromResult(JsonConvert.SerializeObject(OBJETO_DO_POST)).ConfigureAwait(false);
var stringContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");
var response = await client.PostAsync("URL_POST", stringContent, new CancellationTokenSource(TimeSpan.FromSeconds(15)).Token).ConfigureAwait(false);
}
Eu estava tentando manter o código do iugu inalterado, mas apenas alterando como você sugeriu ele veio a funcionar.
Mas mostra que existe realmente "pouco" interesse de compatibilidade. O core ainda não está no ponto de eu criar apis com ele e botar em produção.
Grato @rscouto pelas informações.
Caramba @TiagoGouvea achei que já tivesse alterado isso no client! Achei que o problema estivesse dando apenas no seu lado, sorry por não ter entendido corretamente. Vou lançar uma nova versão do client com isso hoje ou amanhã faço isso.
Grato pelo feedback
Tranquilo @rscouto, com estes ajustes no método como sugeriu ficou certinho e já mandei algumas centenas de títulos hoje pela api testando a integração.
O que pega é que http 4.1.0.0 na WebApi atual (sem ser core), não funciona mesmo.
Grato pela atenção.
@TiagoGouvea mano faz a PR ai que eu aprovo, só faz pro branch VNEXT que é a proxima versão do client
@rscouto a empresa optou por não trabalhar com o Iugu por agora.. portanto, parei de avançar no código. Vou ver se acho o trecho aqui logo mais e envio por aqui.
@tiago-alves Fiz o downgrade e aí tudo certinho pra você? Funcionou?
Issue fechada por falta de feedback dos envolidos: @TiagoGouvea e @tiago-alves
Observei que a biblioteca está sendo compilada com a versão 4.6.1 do .NET. Acredito que seria interessante compilar com uma versão anterior, 4.5 talvez, que o pessoal que trabalha em projetos com versão mais antigas do framework possam utilizar.