C # ASP Generic Handler - проблемы с ответом внутри обратного вызова - PullRequest
0 голосов
/ 09 сентября 2018

Я хочу отправлять отправленное сервером событие клиенту каждый раз, когда запускается новое событие.

Но внутри моего обратного вызова я вызываю статический метод с именем commonEventBuffer.sendIncommingEvent () и передаю текст сообщения (который должен быть отправлен обратно клиенту, а также объект ответа), но в этом методе я получаю исключение при вызове _resp.write ().

В качестве сообщения об исключении я получаю «Ссылка на объект не установлена ​​на экземпляр объекта.

Так что я не так делаю?

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace HomeScadaWebApp
{
    /// <summary>
    /// Summary description for incommingEventHandler
    /// </summary>
    public class incommingEventHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            commonEventBuffer._storedResponse = context.Response;
            getNotification.myHandler += CB;
        }

        private void CB(object sender, EventArgs e)
        {
            string s = commonAESStuff.getEventChanges();
            commonEventBuffer.sendIncommingEvent(s,commonEventBuffer._storedResponse);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


//class commonEventBuffer.cs (is an additional file!!)


public class commonEventBuffer
{
    public  static HttpResponse _storedResponse;

    public static void addEvent(String s)
    {
        commonAESStuff.addEventChange(s);
    }

    public static void sendIncommingEvent(string s,HttpResponse _resp)
    {
        if (_resp != null && s != null)
        {
            try
            {
                _resp.ContentType = "text/event-stream";
                _resp.Write("data:" + s.ToString() + "\n\n");
                _resp.Flush();
            }
            catch (Exception ex)
            {

            }
        }
    }
}
...