Получить sessionID из HttpListenerContext - PullRequest
0 голосов
/ 21 февраля 2019

Я использую httplistener с кодом, который основан на коде из:

https://aksakalli.github.io/2014/02/24/simple-http-server-with-csparp.html

Я пытаюсь реализовать сеансы.

К сожалению, я не могу ничего найти в HttpListenerContext , относящийся к сеансу.

Я также пытался использовать System.Web.HttpContext.Current.Session.SessionID Но это приводит меня к ошибке «Ссылка на объект неустановить экземпляр объекта ”

Буду признателен за помощь.

Пример кода:

private void ProcessContext(HttpListenerContext context)
    {
        // get filename path
        string filename = context.Request.Url.AbsolutePath;
        if (filename != null) filename = filename.Substring(1);

        // get default index file if needed
        if (string.IsNullOrEmpty(filename))
        {
            foreach (string indexFile in indexFiles)
            {
                if (File.Exists(Path.Combine(path, indexFile)))
                {
                    filename = indexFile;
                    break;
                }
            }
        }

        Console.WriteLine("Loading file: " + filename);
        filename = Path.Combine(path, filename);

        // send file
        HttpStatusCode statusCode;
        if (File.Exists(filename))
        {
            try
            {
                using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    // get mime type
                    context.Response.ContentType = mimeTypes[Path.GetExtension(filename)];
                    context.Response.ContentLength64 = stream.Length;

                    // copy file stream to response
                    stream.CopyTo(context.Response.OutputStream);
                    stream.Flush();
                    context.Response.OutputStream.Flush();
                }

                statusCode = HttpStatusCode.OK;
            }
            catch (Exception e)
            {
                Console.WriteLine("ERROR: " + e.Message);
                statusCode = HttpStatusCode.InternalServerError;
            }
        }
        else
        {
            Console.WriteLine("File not found: " + filename);
            statusCode = HttpStatusCode.NotFound;
        }

        // finish
        context.Response.StatusCode = (int)statusCode;
        if (statusCode == HttpStatusCode.OK)
        {
            context.Response.AddHeader("Date", DateTime.Now.ToString("r"));
            context.Response.AddHeader("Last-Modified", File.GetLastWriteTime(filename).ToString("r"));
        }

        context.Response.OutputStream.Close();
    }
...