Após fazer tudo no codigo, no video mostra ele compilando, abrindo o site e o site funcionando, mas quando entro para ver o site aparece "Não é possivel aceder a este site" localhost recusou estabelecer ligação
ERR_CONNECTION_REFUSED
Após fazer tudo no codigo, no video mostra ele compilando, abrindo o site e o site funcionando, mas quando entro para ver o site aparece "Não é possivel aceder a este site" localhost recusou estabelecer ligação
ERR_CONNECTION_REFUSED
Boa tarde Júlio, Blz?
Como vc está chamando o site na URL do navegador? Execute a aplicação,quando aparecer o console.
Acesse o navegador e digite: http://localhost:5341/View/Home/Index.html
para testar o arquivo.
Olá, Júlio!
Baixei o projeto e testei. Primeiro, obtive o mesmo erro que você (ERR_CONNECTION_REFUSED), mas após dar uma mexida no código, o erro mudou para ERR_CONNECTION_RESET.
Após dar uma pesquisada, vi que um outro aluno já enfrentou esse mesmo problema e foi ajudado pelo instrutor do curso. Segue a Thread: https://cursos.alura.com.br/forum/topico-aula-1-o-comando-resposta-outputstream-write-nao-esta-funcionando-em-tempo-de-execucao-53983
Porém, o código era relativo à aula 1.
Fiz uma adaptação seguindo que tinha sido implementado até a aula 3 (projeto inicial da aula 4) na classe WebApplication, testei com as URLs
http://localhost:5341/Cambio/MXN
http://localhost:5341/Cambio/USD
e deu certinho.
Segue o código da classe WebApplication refatorada:
public class WebApplication
{
private readonly string[] _prefixos;
private HttpListener httpListener;
public WebApplication(string[] prefixos)
{
if (prefixos == null)
throw new ArgumentNullException(nameof(prefixos));
_prefixos = prefixos;
}
public void Iniciar()
{
httpListener = new HttpListener();
foreach (var prefixo in _prefixos)
httpListener.Prefixes.Add(prefixo);
httpListener.Start();
// Deste modo, trataremos as requisições de forma assíncrona
// ou seja, a linha a seguir é não-bloqueante e o primeiro
// parâmetro é o callback a ser invocado quando o contexto
// for obtido.
httpListener.BeginGetContext(CallBack_QuandoContextoForObtido, null);
// Como a linha anterior é assíncrona e não bloqueante, uso
// esta linha para o processo da aplicação não encerrar.
Console.ReadLine();
}
private void CallBack_QuandoContextoForObtido(IAsyncResult asyncResult)
{
var contexto = httpListener.EndGetContext(asyncResult);
// Antes de tratar a requisição atual, já
// deixaremos o httpListener aguardando a próxima,
// chamando BeginGetContext novamente.
httpListener.BeginGetContext(CallBack_QuandoContextoForObtido, null);
// Daqui para baixo é exatamente o mesmo código
// com exceção da chamada do método Stop(), pois
// manteremos a nossa instância httpListener já
// preparada para a próxima requisição!
var requisicao = contexto.Request;
var resposta = contexto.Response;
var path = requisicao.Url.AbsolutePath;
if (Utilidades.EhArquivo(path))
{
var manipulador = new ManipuladorRequisicaoArquivo();
manipulador.Manipular(resposta, path);
}
else
{
var manipulador = new ManipuladorRequisicaoController();
manipulador.Manipular(resposta, path);
}
// Não daremos Stop, pois o HttpListener continuará
// pronto para outra requisição!
// httpListener.Stop();
}
}