HttPlistener - كيف يمكنني إرسال خطأ WebException HTTP 304 "غير معدل" إلى المتصفح؟

StackOverflow https://stackoverflow.com/questions/2611264

سؤال

كيف يمكنني تقليد خطأ WebException 304 مرة أخرى إلى المتصفح إذا كنت أستخدم httplistener؟

هذا هو أنني تلقيت طلبًا إلى httplistener الخاص بي ، ثم حصلت على httplistenercontext ، ثم من هذه النقطة كيف يمكنني التقليد/الترتيب للحصول على استجابة http "304 غير المعدلة" لإرسالها بشكل فعال إلى المتصفح عبر httplistenercontext.response؟

تعديل:

لقد جربت ما يلي ، ومع ذلك ، أحصل على خطأ في محاولة لنسخ WebException.status إلى httpwebropsonse.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();

شكرًا

هل كانت مفيدة؟

المحلول

أعتقد أن لدي:

    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();
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top