Olá,
Estou tentando reproduzir os resultados da primeira aula, porém quando digito no browser o endereço do CSS, na maioria das vezes não retorna resultado algum (no chrome retorna o erro ERR_CONNECTION_RESET).
Quando rodo a aplicação no modo de depuração e coloco um breakpoint antes do comando resposta.OutputStream.Write a aplicação retorna texto esperado para o browser. Alguém sabe o que é este e como resolve-lo? Obrigado.
public class WebApplication
{
private readonly string[] _prefixos;
public WebApplication(string[] prefixos)
{
if (prefixos == null)
throw new ArgumentNullException(nameof(prefixos));
_prefixos = prefixos;
}
public void iniciar()
{
while(true)
ManipulaRequests();
}
private void ManipulaRequests()
{
var httpListener = new HttpListener();
foreach (string prefixo in _prefixos)
{
httpListener.Prefixes.Add(prefixo);
}
httpListener.Start();
HttpListenerContext contexto = httpListener.GetContext();
HttpListenerRequest requisicao = contexto.Request;
HttpListenerResponse resposta = contexto.Response;
var path = requisicao.Url.AbsolutePath;
if (path== "/Assets/css/styles.css")
{
//retorna o arquivo css
var assembly = Assembly.GetExecutingAssembly();
var resourceStream = assembly.GetManifestResourceStream("ByteBank_Portal.Assets.css.styles.css");
var bytesResource = new byte[resourceStream.Length];
resourceStream.Read(bytesResource, 0, (int)resourceStream.Length);
resposta.ContentType = "text/css;charset=utf-8";
resposta.StatusCode = 200;
resposta.ContentLength64 = resourceStream.Length;
try
{
resposta.OutputStream.Write(bytesResource, 0, bytesResource.Length);
Console.WriteLine("passou");
}
catch (Exception exp)
{
Console.WriteLine(""+exp.Source+" - " + exp.Message);
}
resposta.OutputStream.Close();
}
//...
httpListener.Stop();
}
}