2

Как мне сопоставить ошибку WebException 304 в браузере, если я использую HttpListener?HttpListener - как отправить сообщение об ошибке WebException HTTP 304 «Not Modified» обратно в браузер?

Это я получил запрос к моему HttpListener, а затем получил HttpListenerContext, а затем с этой точки зрения, как бы я имитировал/организовал ответ HTTP «304 Not Modified», который будет эффективно отправлен обратно в браузер через HttpListenerContext.response?

EDIT:

Я пытался, однако следующим я получаю ошибку при попытке скопировать WebException.Status в HttpWebResponse.StatusCode (Код состояния должен быть ровно три цифры). Любые идеи о том, как исправить это?

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

благодаря

ответ

1

Я думаю, что у меня есть это с:

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' поэтому его назначение может потерпеть неудачу, если 'ex.Message' содержит его. Сообщение об исключении исключений тоже не кажется хорошей идеей - возможно, оно может использоваться как вектор атаки в некоторых неясных случаях. – wqw