HTTPListener - Como envio um erro WebException HTTP 304 “não modificado” de volta ao navegador?
-
25-09-2019 - |
Pergunta
Como eu imito um erro de WebException 304 de volta ao navegador se estiver usando o httplistener?
Ou seja, recebi uma solicitação ao meu HttPlistener e, em seguida, obtive o HttPlistenerContext, então, a partir deste ponto, como eu imitaria/providenciaria uma resposta http "304 não modificada" para ser efetivamente enviada de volta ao navegador por meio do httpListeRerContext. Responsion?
EDITAR:
Eu tentei o seguinte, no entanto, recebo um erro tentando copiar webException.status para httpwebroponse.statuscode (o código de status deve ser exatamente três dígitos). Alguma idéia de como corrigir isso?
catch (WebException ex)
{
listenerContext.Response.StatusCode = (int)ex.Status; //ERROR: The status code must be exactly three digits
listenerContext.Response.StatusDescription = ex.Message;
listenerContext.Response.Close();
obrigado
Solução
Eu acho que tenho com:
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
int statusCode = (int) ((HttpWebResponse) ex.Response).StatusCode;
listenerContext.Response.StatusCode = statusCode;
listenerContext.Response.StatusDescription = ex.Message;
log("WARNING", uri, "WebException/ProtocolError: " + ex.GetType() + " - " + ex.Message);
}
else
{
log("ERROR", uri, "WebException - " + ex.GetType() + " - " + ex.Message);
}
listenerContext.Response.Close();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow