Com o recente lancamento de uma nova versao do .NET Core, a 1.1 (https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-net-core-1-1/), fui correndo atualizar um projeto que estou trabalhando para poder experimentar as novas funcionalidades.Este e um projeto que expoe varias API (WebAPI), e por isso eu uso a ferramenta Postman (https://www.getpostman.com/), dentro do Chrome, para simular as requisicoes.Entretanto, ao atualizar o projeto e suas respectivas bibliotecas e coloca-lo para rodar, ao acessa-lo tanto pelo Chrome (ele tem uma pagina inicial, nao e so API) quanto pelo Postman, o erro abaixo comecou a aparecer.info: Microsoft.AspNetCore.Server.Kestrel[17]Connection id "0HL0J500CHGCA" bad request data: "Invalid request line: <0x16><0x03><0x01><0x00><0xB9><0x01><0x00><0x00><0xB5><0x03><0x03><0xD0><0x95>yq6<0x92><0xCA>6v<0xA9><0x0A>"Microsoft.AspNetCore.Server.Kestrel.BadHttpRequestException: Invalid request line: <0x16><0x03><0x01><0x00><0xB9><0x01><0x00><0x00><0xB5><0x03><0x03><0xD0><0x95>yq6<0x92><0xCA>6v<0xA9><0x0A>Muito frustrante. Tentei ate voltar a versao do .NET Core para 1.0. As chamadas continuaram dando erro, so que desta vez a mensagem era diferente.Microsoft.AspNetCore.Server.Kestrel: Information: Connection id "0HL0J555RROF" bad request data: "Malformed request: MethodIncomplete"Microsoft.AspNetCore.Server.Kestrel.BadHttpRequestException: Malformed request: MethodIncompleteNo Chrome, a mensagem era ERR_SSL_PROTOCOL_ERROR. Achei estranho pois a URL que eu acesso e http://localhost:5000/, sem SSL. Ao monitorar a chamada pelas ferramentas de desenvolvimento do Chrome, percebi que estava sendo retornado um codigo 307, pedindo para que a requisicao fosse redirecionada para usar HTTPS.Perdi boa parte do meu final de noite procurando uma forma de resolver, e acabei desistindo. Hoje, encontrei um bug aberto no Github do projeto do Kestrel: https://github.com/aspnet/KestrelHttpServer/issues/1217Era exatamente o mesmo problema que eu tive! Em resumo, o problema e com a ultima versao do Chrome, a 54, pois eu conseguia trabalhar com a versao 53 sem problemas neste projeto com o .NET Core 1.0.A solucao para o problema e simples: ao inves de utilizar o endereco no localhost, se eu fizer a chamada apontando para o IP 127.0.0.1, tudo funciona normalmente!Com isso, pude voltar a trabalhar tranquilo no projeto e fazer os testes. Quem estiver com esse mesmo sintoma, sugiro tentar mudar o endereco.Obs. No mesmo bug no Github, e sugerido remover a entrada "localhost" das configuracoes do Chrome em "chrome://net-internals/#hsts", mas como trocar o endereco ja funcionou para mim, eu nem fui atras disso.Abracos! Uma das regras que ajudam a nortear o design de objetos e o Principio de Substituicao de Liskov. Esse preceito foi definido inicialmente por Barbara Liskov em 1987 mas ganhou maior divulgacao ao compor o grupo de regras chamado SOLID exposto por Robert C. Martin no livro Agile Software Development: Principles, Patterns, and Practices.Este principio diz que se q(x) e uma propriedade demonstravel dos objetos x de tipo T. Entao q(y) deve ser verdadeiro para objetos y de tipo S onde S e um subtipo de T. Um pouco confuso na primeira vez que se le, mas que na pratica atesta que eu posso substituir uma instancia de uma classe por outra instancia que seja de uma subclasse da primeira, sem que isso altere o comportamento do sistema.Vamos usar um exemplo para poder explicar melhor. Veja a listagem de codigo abaixo. Ela simula um sistema de calculo de imposto para venda de veiculos. A classe Carro contem um metodo chamado CalcularValorImposto que recebe o valor do veiculo e quando acionado faz todo o calculo dos impostos devidos (ICMS, IPI, etc.), armazenando o resultado em