代码之家  ›  专栏  ›  技术社区  ›  Siggi

C#HttpListenerResponse留下临时文件

  •  1
  • Siggi  · 技术社区  · 7 年前

    我使用HttpListener编写了一个Windows服务。该服务需要为当前使用HttpListenerResponse完成的每个请求发送响应。

    不幸的是,为每个响应创建了一个临时文件(以响应为内容),并将其保留在%userprofile%\AppData\Local\Temp下。

    我基本上是在这里使用Microsofts示例代码 https://msdn.microsoft.com/en-us/library/system.net.httplistenerresponse(v=vs.110).aspx 这表明了同样的行为。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TestApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                string[] pre = { "http://localhost:8080/" };
                SimpleListenerExample(pre);
            }
    
            // This example requires the System and System.Net namespaces.
            public static void SimpleListenerExample(string[] prefixes)
            {
                if (!HttpListener.IsSupported)
                {
                    Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
                    return;
                }
                // URI prefixes are required,
                // for example "http://contoso.com:8080/index/".
                if (prefixes == null || prefixes.Length == 0)
                    throw new ArgumentException("prefixes");
    
                // Create a listener.
                HttpListener listener = new HttpListener();
                // Add the prefixes.
                foreach (string s in prefixes)
                {
                    listener.Prefixes.Add(s);
                }
                listener.Start();
                Console.WriteLine("Listening...");
                // Note: The GetContext method blocks while waiting for a request. 
                HttpListenerContext context = listener.GetContext();
                HttpListenerRequest request = context.Request;
                // Obtain a response object.
                HttpListenerResponse response = context.Response;
                // Construct a response.
                string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
                byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
                // Get a response stream and write the response to it.
                response.ContentLength64 = buffer.Length;
                System.IO.Stream output = response.OutputStream;
                output.Write(buffer, 0, buffer.Length);
                // You must close the output stream.
                output.Close();
                listener.Stop();
            }
        }
    }
    

    我想编写一个长期运行的Windows服务,并相信这些临时文件可能会在一段时间后出现问题。

    没有temp,我如何发送响应。文件创建?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Siggi    7 年前

    哎哟,我想出来了。代码没有问题。临时文件是由工具创建的 我只是在休息 ( http://www.swensensoftware.com/im-only-resting )我过去常常发送帖子回复来测试我的服务。

    很抱歉造成混淆,谢谢您的帮助。