与 IIS 上发布网站相比,使用 HttpListener 编程的程序更加轻量化,易于发布和更新。配合 Thread 或 Task 类也可满足一定的并发。
https://docs.microsoft.com/zh-cn/dotnet/api/system.net.httplistener?view=netframework-4.7.2
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Threading; using System.IO; //https://docs.microsoft.com/zh-cn/dotnet/api/system.net.httplistener?view=netframework-4.7.2 namespace WebServer { class Program { static void Main(string[] args) { try { using (HttpListener listener = new HttpListener()) { listener.Prefixes.Add("http://localhost:8888/"); listener.Start(); Console.WriteLine("开始监听"); while (true) { try { HttpListenerContext context = listener.GetContext();//阻塞 HttpListenerRequest request = context.Request; string postData = new StreamReader(request.InputStream).ReadToEnd(); Console.WriteLine("收到请求:" + postData); HttpListenerResponse response = context.Response;//响应 string responseBody = "响应"; response.ContentLength64 = System.Text.Encoding.UTF8.GetByteCount(responseBody); response.ContentType = "text/html; Charset=UTF-8"; //输出响应内容 Stream output = response.OutputStream; using (StreamWriter sw = new StreamWriter(output)) { sw.Write(responseBody); } Console.WriteLine("响应结束"); } catch (Exception err) { Console.WriteLine(err.Message); } } } } catch (Exception err) { Console.WriteLine("程序异常,请重新打开程序:" + err.Message); } } } }