C#怎么实现一个简单的Web服务器 C# HttpListener使用方法


HttpListener 是 C# 原生轻量 Web 服务器方案,无需 IIS 或 Kestrel,支持 .NET Framework 和 .NET 5+;需管理员权限注册 URL 前缀(如 http://localhost:8080/),核心步骤为创建监听器、添加前缀、调用 GetContext() 或 GetContextAsync() 处理请求,注意异常捕获、资源释放与并发处理。

c#怎么实现一个简单的web服务器 c# httplistener使用方法

用 C# 实现一个简单的 Web 服务器,HttpListener 是最轻量、无需 IIS 或 Kestrel 的原生方案,适合调试、内网工具或嵌入式场景。它不依赖 ASP.NET Core,.NET Framework 和 .NET 5+ 都支持(注意权限和前缀注册)。

基础用法:监听并响应一个 GET 请求

核心步骤就三步:创建监听器、添加 URL 前缀、启动监听并处理上下文。

  • 必须以管理员权限运行(Windows 上注册 http://localhost:8080/ 等前缀需要)
  • URL 前缀格式为 "http://localhost:8080/",末尾斜杠不能省
  • 调用 GetContext() 是阻塞的,收到请求才返回;可用 GetContextAsync() 配合 async/await

示例代码:

var listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8080/");
listener.Start();
Console.WriteLine("服务器已启动,访问 http://localhost:8080");
<p>while (true)
{
var ctx = listener.GetContext(); // 阻塞等待请求
var response = ctx.Response;
var buffer = Encoding.UTF8.GetBytes("Hello from HttpListener!");
response.ContentLength64 = buffer.Length;
response.OutputStream.Write(buffer, 0, buffer.Length);
response.Close();
}

支持多种 HTTP 方法和路径路由

ctx.Request.HttpMethod 和 ctx.Request.Url.LocalPath 可做简单路由判断。

  • 区分 GET /api/data 和 POST /submit,用 if 判断即可
  • 读取 POST 数据:用 ctx.Request.InputStream + StreamReader(注意编码)
  • 设置响应状态码:response.StatusCode = 404;,响应头:response.Headers["Content-Type"] = "application/json";

例如返回 JSON:

微信二级防封域名 微信二级防封域名

防封域名方法千千种,我们只做最简单且有用的这一种。微信域名防封是指通过技术手段来实现预付措施,一切说自己完全可以防封的那都是不可能的,一切说什么免死域名不会死的那也是吹牛逼的。我们正在做的是让我们的推广域名寿命更长一点,成本更低一点,效果更好一点。本源码采用 ASP+ACCESS 搭建,由于要用到二级域名,所以需要使用独享云虚机或者云服务器,不支持虚拟主机使用,不支持本地测试。目前这是免费测试版,

微信二级防封域名 2 查看详情 微信二级防封域名
if (ctx.Request.HttpMethod == "GET" && ctx.Request.Url.LocalPath == "/api/time")
{
    var json = $"{{\"time\":\"{DateTime.Now:O}\"}}";
    var buffer = Encoding.UTF8.GetBytes(json);
    response.ContentType = "application/json";
    response.ContentLength64 = buffer.Length;
    response.OutputStream.Write(buffer, 0, buffer.Length);
}

安全与健壮性要点

实际使用不能只写 while(true),要注意异常、资源释放和并发。

  • 把 GetContext() 放在 try/catch 中,避免一次异常导致服务中断
  • 监听器停止时调用 listener.Stop() 和 .Close()
  • 每个响应必须调用 response.Close(),否则连接可能挂起
  • 如需并发处理多个请求,建议用线程池或 Task.Run() 分发上下文,避免阻塞主线程

注册 URL 前缀(Windows 必做)

首次运行常报错“拒绝访问”,是因为系统没授权该用户监听该地址。打开管理员命令行执行:

netsh http add urlacl url=http://localhost:8080/ user=Everyone
// 或指定当前用户名(推荐)
netsh http add urlacl url=http://+:8080/ user="%USERDOMAIN%\%USERNAME%"

撤销命令是 netsh http delete urlacl url=http://localhost:8080/。用 + 表示绑定所有网卡(注意防火墙)。

基本上就这些。HttpListener 不复杂但容易忽略权限和资源释放,跑通后可封装成小工具类,比如带日志、静态文件服务或简单 API 路由。不需要重造轮子时,它足够快、够轻、够直接。

以上就是C#怎么实现一个简单的Web服务器 C# HttpListener使用方法的详细内容,更多请关注其它相关文章!


# json  # js  # 的是  # 放在  # 是因为  # 序列化  # 这一  # 这是  # 都是  # 如何将  # 不支持  # .n  # c#  # stream  # win  # 路由  # ai  # iis  # 工具  # app  # 防火墙  # 编码  # windows  # 状态码  # 不可能  # 巴中网站建设与优化  # 张槎网站建设专家  # 衡阳营销推广哪家有创意  # 安徽seo网站优化招聘  # 台江区网页seo推广  # sem推广新账号网站链接怎么做  # 平谷营销推广机构地址在哪  # 承德互联网网站建设业务  # 莞城沙田网站建设  # 推广书参考网站推荐哪个 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: j*a中赋值运算符是什么?  网站体验不好=浪费钱:如何提升-用户体验效果差  Lar*el怎么实现全文搜索_Lar*el Scout集成Algolia教程  《edge浏览器》关闭翻译功能方法  咸鱼怎么设置仅粉丝可见的动态_咸鱼动态粉丝可见设置方法  《领英》查看屏蔽名单方法  猫眼app抢票快还是小程序快  2025SNH48年度青春盛典门票价格及购买方式  深入理解Python对象引用与链表属性赋值  天天漫画2025最新入口 天天漫画永久有效登录入口  j*a中ArrayBlockingQueue的使用  《气泡星球》兑换码礼包大全  C#解析并修改XML后保存 如何确保格式与编码的正确性  邮政快递寄件查询入口 邮政快递收件查询入口  键盘声音异常怎么回事_键盘异响怎么处理  荣耀盒子应用管理技巧  中通快递官网指定查询 中通快递单号查询平台入口  电脑的“恢复环境(WinRE)”找不到怎么办_Windows系统恢复环境重建【高级修复】  win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】  悟空浏览器网页版在线工具 悟空浏览器网页版在线平台入口  Win10输入法不见了怎么办 Win10找回语言栏图标教程  手机坏了微信聊天记录怎么导出来 新手机恢复聊天记录技巧  电脑开不了机怎么办 电脑无法开机的解决方法  MySQL多重关联查询:利用别名高效获取同一表的多个关联字段  《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐  使用VS Code作为你的个人知识管理系统  哔哩哔哩在线观看入口 B站官网免费进入  TikTok网页版入口快速访问 TikTok官网账号登录方法  斯宾塞称XGP云游戏“蒸蒸日上”:正在构建一个游戏从未如此唾手可得的未来  小米手机截图后如何查看历史_小米手机截图历史记录查看方法  iPhone12是否要更新ios16  CodeIgniter 3 中基于 MySQL 数据高效生成动态图表教程  PHP使用DOMDocument与XPath精准追加XML元素教程  windows10怎么更改下载路径_windows10默认存储位置修改教程  有道AI翻译入口 智能写作官方网站入口  包子漫画在线观看入口 包子漫画网正版全集链接  圆通快递官网入口查询单号 手机版官方查询入口  C++如何实现单例模式_C++线程安全的单例模式写法  TikTok笔记文字无法编辑如何解决 TikTok笔记文字编辑优化方法  抖音小程序怎么开通?小程序开通条件是什么?  Go反射进阶:访问内嵌结构体中的被遮蔽方法  漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明  优化Asyncio嵌套函数调度:使用生产者-消费者模式实现并发流处理  POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩  AngularJS动态内容中DOM元素查找的时序问题及$timeout解决方案  《书耽》更换手机号方法  悟空浏览器网页版链接 悟空浏览器网页版最新有效地址  悟空浏览器如何恢复关闭的标签页 悟空浏览器撤销关闭网页快捷键设置  mysql中外键约束如何使用_mysql FOREIGN KEY操作  《东方航空》添加乘机人方法 

 2025-12-14

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.