.NET5框架下使用HttpListener类实现http接口监听替代OWIN自我寄宿

博客随笔
81
C#
HttpListener
.net5
http监听

.NET5框架下使用HttpListener类实现http接口监听替代OWIN自我寄宿

场景:

下面就是HttpListener类实现http接口的核心代码 需要的同学可以参考下

        static HttpListener _HttpListener;

        public static bool Start(out string error)
        {
            error = "";
            if (!HttpListener.IsSupported)
            {
                //系统不支持
                return false;
            }

            try
            {
                _HttpListener = new HttpListener();
                string host1 = $"http://127.0.0.1:8888/";
                string host2 = $"http://本地ip:8888/";
                _HttpListener.Prefixes.Add(host1);
                _HttpListener.Prefixes.Add(host2);
                _HttpListener.Start();

                Task.Factory.StartNew(async () =>
                {
                    //这里使用的while循环去监听消息。其实还有一种BeginGetContext的方式去监听消息 但感觉还没这个干净代码量还要多一些就懒得换了,有兴趣的同学百度找一下
                    while (_HttpListener.IsListening)
                    {
                        HttpListenerContext context = _HttpListener.GetContext();
                        //context 就和一般的.net mvc web项目里控制器里的httpcontext 类似 这里就不细说了
                        await Task.Run(() =>
                        {
                           //输出信息流
                           using (StreamWriter writer = new StreamWriter(response.OutputStream))
                           {
                                response.StatusCode = 200;
                                response.AddHeader("Content-Type", "application/json");
                                writer.Write(Newtonsoft.Json.JsonConvert.SerializeObject(new                                         {success=true,message="执行成功"}));
                           }
                        });
                        await Task.Delay(1);
                    }
                });
                return true;
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return false;
            }
        }
vs编译时报错 不安全代码只会在使用 /unsafe 编译的情况下出现
C#编程怎么使用正则表达式提取或匹配内容
 C# 实现 Rsa字符串非对称加密简单例子
 C#实现图像以中心点任意角度旋转
WPF 数据转换器 IValueConverter例子
C# 去掉去除文本字符中的空格\换行\html标签
Web上传文件请求报错超过了最大请求长度
c# 获取本机电脑名称、Ip信息
C#如何利用(Windows Script Host)COM组件来创建快捷方式
VS错误提示无法嵌入互操作类型“IWshShell_ClassClass”,请改用适用的接口的解决方法
C# 操作DOS添加端口防火墙名单
C# 引用NPOI组件实现泛型实体集合转换成表格Excel
暂无相关内容...
C#结合虫洞软件(Wormhole)实现自动登录到手机版百度网盘的流程源码
.NET5+C# WPF实现图片添加倾斜文字平铺水印工具源码
[人脸检测]基于C#OpenCvSharp+haarcascade人脸、人眼模型实现人脸检测源码
基于.NET4.0实现的目录文件新增监视并自动化上传至ftp完整流程工具源码
C#基于OpenCVSharp实现图片对比相似度百分比源码下载
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删