HttpListener - как я могу отправить WebException HTTP 304 "Not Modified" ошибка обратно в браузер? - PullRequest
2 голосов
/ 10 апреля 2010

Как мне имитировать ошибку WebException 304 обратно в браузер, если я использую HttpListener?

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

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 Ответ

1 голос
/ 11 апреля 2010

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

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