当前位置: 首页 > news >正文

黔西南布依族苗族自治州网站建设_网站建设公司_Banner设计_seo优化

网站开发空间小,网站备案麻烦吗,传奇页游排行榜,刀客源码前言上一篇我们通过实战分享了使用Go推送钉钉消息#xff0c;由于技痒#xff0c;笔者现在也编写了一个.NET Core的Demo#xff0c;作为简单的对照和说明。最后#xff0c;由于精力有限#xff0c;笔者希望有兴趣的朋友可以分享下使用CoreRT将.NET Core编译成机器代码这块… 前言上一篇我们通过实战分享了使用Go推送钉钉消息由于技痒笔者现在也编写了一个.NET Core的Demo作为简单的对照和说明。最后由于精力有限笔者希望有兴趣的朋友可以分享下使用CoreRT将.NET Core编译成机器代码这块的实践。目录使用.NET Core推送钉钉消息获取参数设置消息数据格式发送请求设置Dockerfile运行并设置环境变量推送消息使用.NET Core推送钉钉消息这里我们使用.NET Core来完成相关需求注意这里是.NET Core而不是ASP.NET Core。需求和上面类似工程相关依赖如下所示    PackageReferenceIncludeMicrosoft.Extensions.ConfigurationVersion2.2.0/    PackageReferenceIncludeMicrosoft.Extensions.Configuration.CommandLineVersion2.2.0/    PackageReferenceIncludeMicrosoft.Extensions.Configuration.EnvironmentVariablesVersion2.2.0/    PackageReferenceIncludeMicrosoft.Extensions.HttpVersion2.2.0/    PackageReferenceIncludeNewtonsoft.JsonVersion12.0.1/ 以下是相关的主体代码获取参数从环境变量或者命令行参数获取配置       ///summary       ///环境变量列表       ////summary       privatestaticreadonlystring[] EnvList        {            //钉钉机器人地址            WEBHOOK,            //的手机号码            AT_MOBILES,            //所有人            IS_AT_ALL,           //消息内容            MESSAGE,            //消息类型仅支持文本和markdown            MSG_TYPE       };        privatestaticvoid Main(string[] args)       {            var config newConfigurationBuilder()                        //支持命令行参数                        .AddCommandLine(args)                        //支持环境变量                       .AddEnvironmentVariables()                        .Build();            #region参数检查            foreach (var envName in EnvList)            {                var value config[envName];                if (string.IsNullOrWhiteSpace(value) envName ! AT_MOBILES envName ! IS_AT_ALL)                {                    Console.WriteLine(${envName}不能为空);                    return;                }            }            if (string.IsNullOrWhiteSpace(config[AT_MOBILES]) string.IsNullOrWhiteSpace(config[IS_AT_ALL]))            {                Console.WriteLine(必须设置参数 AT_MOBILES 和 IS_AT_ALL 两者之一);                return;            }            #endregion            try            {                //推送消息               SetDataAndSendWebhooks(config).Wait();            }            catch (Exception ex)           {               Console.WriteLine(ex.ToString());            }       } 设置消息数据格式设置消息格式为了简单这里我们使用匿名类       ///summary       ///设置消息并调用Webhook       ////summary       ///param nameconfig/param       ///returns/returns       privatestaticasync Task SetDataAndSendWebhooks(IConfigurationRoot config)       {            var at new            {                AtMobiles config[AT_MOBILES]?.Split(,),                IsAtAll Convert.ToBoolean(config[IS_AT_ALL] ?? false)            };            switch (config[MSG_TYPE])            {                casetext:                    {                        var data new                        {                            Msgtype text,                            Text new                            {                                Content config[MESSAGE]                            },                            At at                        };                        awaitSendWebhooks(config[WEBHOOK], data);                        break;                    }                casemarkdown:                    {                        var data new                        {                            Msgtype markdown,                            Markdown new                            {                                Title 钉钉通知,                                Text config[MESSAGE]                            },                            At at                        };                        awaitSendWebhooks(config[WEBHOOK], data);                        break;                    }                default:                    {                        Console.WriteLine($不支持的格式:{config[MSG_TYPE]});                        break;                    }            }       } 发送请求此处代码使用Newtonsoft.Json做JSON序列化然后使用Microsoft.Extensions.Http的HttpClient库来发送Post请求。在数据格式这块我们通过配置做了以下设置忽略Null值。也就是为null的属性不做JSON序列化。设置属性命名规则为Camel-Case驼峰式命名法首字母小写。 主体代码如下所示       ///summary       ///调用webhook       ////summary       ///typeparamnameT/typeparam       ///param nameurlwebhook地址/param       ///param namedata消息/param       ///returns/returns       privatestaticasync Task SendWebhooksT(string url, T data) where T : class       {            JsonConvert.DefaultSettings newFuncJsonSerializerSettings(() newJsonSerializerSettings()            {                NullValueHandling NullValueHandling.Ignore,                ContractResolver newCamelCasePropertyNamesContractResolver()            });            var jsonData JsonConvert.SerializeObject(data);            Console.WriteLine(jsonData);            using (var httpClient new HttpClient())            {                var content newStringContent(jsonData);                content.Headers.ContentType newMediaTypeHeaderValue(application/json);                var result awaithttpClient.PostAsync(url, content);               result.EnsureSuccessStatusCode();                Console.WriteLine($Send webhook succeed. StatusCode:{result.StatusCode});            }       } 设置Dockerfile在之前我们已经讲述过使用了分阶段构建。整个Dockerfile基本上使用VS Docker tool生成FROMmicrosoft/dotnet:2.2-runtime AS baseWORKDIR /app FROMmicrosoft/dotnet:2.2-sdk AS buildWORKDIR /srcCOPY DingTalk.NET/DingTalk.NET.csprojDingTalk.NET/RUN dotnet restoreDingTalk.NET/DingTalk.NET.csprojCOPY . .WORKDIR /src/DingTalk.NETRUN dotnet buildDingTalk.NET.csproj -c Release -o /app FROM build AS publishRUN dotnet publish DingTalk.NET.csproj-c Release -o /app FROM base AS finalWORKDIR /appCOPY --frompublish/app .ENTRYPOINT [dotnet, DingTalk.NET.dll] # 注意不要单独使用 MAINTAINER 指令MAINTAINER已被Label标签代替LABEL MAINTAINER xinlaixin-lai.com# LABEL指令用于将元数据添加到镜像支持键值对和JSON我们可以使用 docker inspect 命令来查看LABELDingtalkComponent{\    description: 使用钉钉发送通知消息.,\    input: [\        {name: WEBHOOK,desc: 必填, 钉钉机器人Webhook地址},\        {name:AT_MOBILES, desc: 非必填被人的手机号},\        {name:IS_AT_ALL, desc: 非必填所有人时:true, 否则为:false},\        {name: MESSAGE,desc: 必填自定义发送的消息内容}\        {name:MSG_TYPE, desc: 必填自定义发送的消息类型目前仅支持text和markdown}\        ]\    }编译完成后我们来查看下镜像大小注意通过上图我们可以看到镜像大小不到200M相比GO体重大了许多但是相比其他语言却轻了不少。不过我们可以通过官方开源库CoreRT将.NET Core编译成机器代码也就是.NET Core也可以做到编译完成后只有几M大小。有兴趣的朋友可以分享下这块的实践。运行并设置环境变量推送消息我们使用PowerShell编写简单脚本如下所示docker build --rm-f Dockerfile -t dingtalk.net:latest . docker run --rm -eWEBHOOKhttps://oapi.dingtalk.com/robot/send?access_token{yourAccess Token}     -e MESSAGE*使用.NET Core发送钉钉消息。*     -e IS_AT_ALLtrue     -e MSG_TYPEmarkdown     -d dingtalk.net 效果如图往期内容链接Docker最全教程——从理论到实战一Docker最全教程——从理论到实战二Docker最全教程——从理论到实战三Docker最全教程——从理论到实战四Docker最全教程——从理论到实战五Docker最全教程——从理论到实战六Docker最全教程——从理论到实战七Docker最全教程——从理论到实战(八)    Docker最全教程——从理论到实战九Docker最全教程之使用Tencent Hub来完成CI十Docker最全教程——数据库容器化十一Docker最全教程——数据库容器化之持久保存数据十二Docker最全教程——MongoDB容器化十三Docker最全教程——Redis容器化以及排行榜实战十四Docker最全教程之Ubuntu下安装Docker十五Docker最全教程之树莓派和Docker十六Docker最全教程之使用TeamCity来完成内部CI、CD流程十七Docker最全教程之使用Docker搭建Java开发环境十八Docker最全教程之Go实战墙裂推荐十九转载是一种动力 分享是一种美德如果喜欢作者的文章请关注“magiccodes”订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有欢迎转载但未经作者同意必须保留此段声明且在文章页面明显位置给出原文连接否则保留追究法律责任的权利。QQ群编程交流群85318032 产品交流群897857351长沙线下技术社区已经创建有兴趣者可以通过客服加群。接下来我们会定期组织一些线下技术交流分享会以飨大家。
http://www.lebaoying.cn/news/21874.html

相关文章:

  • 怎么做网站聊天视频直播wordpress 运营
  • 小企业网站维护一年多少钱苏州网站建设一条龙
  • 华强北做电子网站两个网站做反向代理
  • 成都网站建设公司浅谈好的微商城平台
  • 寒亭营销型网站建设淘宝网站建设的缺点
  • 上海网站备案网站网站后台样式
  • 长沙征帆网站建设常州个性化网站建设
  • 点匠网站开发流程专业做网站推广
  • 酷站网怎么样让百度搜到自己的网站
  • 医院做网站的费用多少html诗词赏析网页制作步骤
  • 百度为何不收录你的网站产品页wordpress 导航菜单设置
  • 商品网站开发需求表网上接设计单在哪里接
  • 茂名市住房和城乡建设局网站招代理网站怎么做
  • 网站有后台更新不了网站建设上传视频
  • 成功网站管理系统asp.net 实现 网站的开关
  • 如何做棋牌网站wordpress前台管理
  • 品牌红酒的网站建设佛山市多语言营销型网站建站
  • 杭州拱墅区做网站网站主题包括
  • 摄影作品网站知乎标准品购买网站
  • 网站管理难做吗最新app开发软件
  • 惠州市网站建设个人网站域名需icp备案
  • 空间备案网站学校网站开发图片素材
  • 网站做快照怎么做搜狗提交入口网址
  • 公司网站怎么注册手机 登录asp网站
  • 企业网站建设方案价格有限公司与有限责任公司的区别
  • 网站建设学习学校湖南长沙大学
  • 微网站开发软件数字化转型
  • 网站推广如何做企业网络营销的意义
  • 萧山网站建设xssemwordpress加载不出图
  • 十堰网站建设有哪些公司wordpress 首页编辑