2

Comment imiter une erreur WebException 304 vers le navigateur si j'utilise HttpListener?HttpListener - comment envoyer une erreur WebException HTTP 304 "Non Modifié" au navigateur?

C'est que j'ai reçu une demande à mon HttpListener, puis obtenu le HttpListenerContext, puis à partir de ce point comment est-ce que je mime/arrange pour qu'une réponse HTTP "304 Non Modifié" soit effectivement renvoyée au navigateur via le HttpListenerContext.response?

EDIT:

j'ai essayé ce qui suit mais je reçois une erreur en essayant de copier WebException.Status à HttpWebResponse.StatusCode (Le code d'état doit être trois chiffres exactement). Des idées sur la façon de corriger cela?

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(); 

grâce

Répondre

1

Je pense que je l'ai avec:

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(); 
    } 
+0

'StatusDescription' n'accepte pas' \ n' donc sa mission pourrait échouer si 'ex.Message' contient. Le message d'exception de fuite ne semble pas non plus une bonne idée - peut éventuellement être utilisé comme vecteur d'attaque dans certains cas obscurs. – wqw