必赢网上注册-亚洲必赢官方登录

学业调节,MVC踩坑日记

日期:2019-10-04编辑作者:必赢网上注册
{ "service": { "id": "count1", "name": "Count", "tags": ["dev"], "address": "localhost", "port": 5001 }}

{ "service": { "id": "count2", "name": "Count", "tags": ["dev"], "address": "localhost", "port": 5002 }}

今后回车运维,该步也没遭遇坑,到此截止数据库安排变成,And一切顺遂 ~*

别的,要求源码的可关心自身的微信徒人号Bug生活2048 回复 NetCore就可以获得

  • js方法

Windows

在介绍 Windows 景况安排在此以前须要先读书一下 Topshelf 秒建 Windows 服务。通过 Topshelf 大家那么些赶快安插四个 Windows 服务。

概念 TestSchedule 如下,代码功用和在此以前的 德姆o 没什么差别,只是将里 Start 和 Shutdown 定义在了章程中。

public class TestSchedule{ readonly IScheduler scheduler = null; public TestSchedule() { // 创建作业调度器 scheduler = new StdSchedulerFactory().GetScheduler().Result; var jobDataMap = new JobDataMap(); jobDataMap.Add("times", "1"); // 创建一个作业 IJobDetail job = JobBuilder.Create<TestJob>() .WithIdentity("job1", "jobGroup1") .UsingJobData(jobDataMap) .Build(); // 创建一个触发器 ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "triggerGroup1") .StartNow() .WithSimpleSchedule(x => x .WithIntervalInSeconds .WithRepeatCount .Build(); scheduler.ScheduleJob(job, trigger).Wait(); } public void Start() { scheduler.Start; } public void Stop() { scheduler.Shutdown; }}

Main 方法中增多如下设置:

static void Main(string[] args){ // 配置和运行宿主服务 HostFactory.Run(x => { // 指定服务类型。这里设置为 TestSchedule x.Service<TestSchedule>(s => { // 通过 new TestSchedule() 构建一个服务实例 s.ConstructUsing(name => new TestSchedule; // 当服务启动后执行什么 s.WhenStarted(tc => tc.Start; // 当服务停止后执行什么 s.WhenStopped(tc => tc.Stop; // 服务用本地系统账号来运行 x.RunAsLocalSystem(); // 服务描述信息 x.SetDescription("TestSchedule"); // 服务显示名称 x.SetDisplayName("TestScheduleService"); // 服务名称 x.SetServiceName("TestScheduleService"); });}

支付景况下直接通过 F5 运转调解。假诺希望安插成服务,只需求在 bin 目录下推行:

xxx.exe install

图片 1安装

劳动运维后大家透过日记记录运营结果如下:

图片 2施行结果

从官方下载页采用适当的阳台下载,解压出三个二进制文件并保留到对应岗位,并将路线存入path中,本文以windows版本为例。打开cmd/powershell 运维 consul agent -dev 输出如下文本表示成功以dev格局运营consul

执行 sudo nano/etc/rc.local 在CentOS下执行 sudo nano /etc/rc.d/rc.local 在今后追加如下行

类型的付出情况如下:

  • 调用方法

Linux

测验代码基于.Net Core 2.0 ,最后经过 Docker 来铺排到 Linux 上。和 Windows 格局临近,成立一个调控台应用程序,Program.cs 首要代码如下:

class Program{ private static readonly ManualResetEvent manualResetEvent = new ManualResetEvent; private static TestSchedule testSchedule; static void Main(string[] args) { testSchedule = new TestSchedule(); // 开启新线程执行 Schedule Task.Run; Console.CancelKeyPress += (sender, e) => { Task.Run; }; AppDomain.CurrentDomain.ProcessExit +=  => { Task.Run; }; // 进入阻塞状态,开始等待唤醒信号。 manualResetEvent.WaitOne(); } private static async Task Start() { await testSchedule.Start(); Console.WriteLine("started"); } private static async Task StopSilo() { await testSchedule.Stop(); Console.WriteLine("stopped"); // 取消阻塞状态,发出唤醒信号 manualResetEvent.Set(); }}

那边须求留意 马努alReset伊芙nt 的运用,它根本用以多线程协同和经过操作,这里能够领略为 Quartz 的实施提供守护进度。

借使是Windows客户,能够把程序 Build 后打包到 Linux 上生成镜像,也足以通过 Docker for Windows 在本土生成镜像。

创建 Dockerfile:

FROM microsoft/aspnetcore:2.0COPY bin/Release/PublishOutput /app/WORKDIR /appENTRYPOINT ["dotnet", "/app/App_NetCore.dll"]
  1. 因而 FROM 内定了特殊需求的基本功镜像 aspnetcore2.0 碰着;
  2. 将宣布好的代码 COPY 到镜像内的 /app/ 目录下( bin/Release/PublishOutput 是程序私下认可公布的地点);
  3. 钦点 /app/ 为办事目录;
  4. 经过 ENT路虎极光YPOINT 钦定程序运维运转的命令。

接下去分别奉行以下几条命令:

// docker build 默认会根据当前目录下的 Dockerfile 文件生成镜像,这里指定镜像名为 beckjin/test-quartznet-localdocker build -t beckjin/test-quartznet-local .// 通过 docker tag 给 beckjin/test-quartznet-local 最新 build 的版本打上一个标签 beckjin/test-quartznet:0.0.1docker tag beckjin/test-quartznet-local:latest beckjin/test-quartznet:0.0.1// 登录 docker hub 账号docker login -u xxx -p xxx // 将镜像推到 docker hub 上docker push beckjin/test-quartznet:0.0.1// 执行 beckjin/test-quartznet:0.0.1 镜像docker run beckjin/test-quartznet:0.0.1

因为这几个事例相比较轻便,这里直接行使 docker run 来试行。结果如下:

图片 3实施结果

修改OcelotGetway项目中的配置文件 configuration.jsonReRoutes 节点中加多

注意,最后一行必需为 exit 0然后施行 sudo chmod +x /etc/rc.local学业调节,MVC踩坑日记。 在CentOS下执行 sudo chmod +x /etc/rc.d/rc.local迄今停止,设置Jexus开机运维成功。

  1. docker + .net core开荒条件搭建
  2. 基于 .net core Restful API+Swagger搭建
  3. .net core下配置、数据库访问等操作实现
  4. .net core下对于Excel的局地操作及利用
  5. .net core下对于附件上传下载的贯彻
  6. .net core下访问调整层的完毕
  7. .net core下验证码及二维码登陆的贯彻
  8. .net core下定期职务的完毕
//点数据var testPointdata = [{ "name": "齐齐哈尔", "log": 123.97, "lat": 47.33, "remark": "备注齐齐哈尔" }, { "name": "赤峰", "log": 118.87, "lat": 42.28, "remark": "备注赤峰" }, { "name": "海门", "log": 121.15, "lat": 31.89, "remark": "备注海门" }, { "name": "成都", "log": 104.06, "lat": 30.67, "remark": "备注成都" }]//线数据(state代表线路是否通畅,0线路正常,1线路损坏)var testLinedata = [{ "fromName": "齐齐哈尔", "toName": "赤峰", "state": 0 }, { "fromName": "齐齐哈尔", "toName": "海门", "state": 1 }, { "fromName": "海门", "toName": "赤峰", "state": 0 }, { "fromName": "赤峰", "toName": "海门", "state": 0 }, { "fromName": "齐齐哈尔", "toName": "成都", "state": 0 }]

参照链接:

  • Quartz.NET Documentation
  • Topshelf 秒建 Windows 服务
  • 案例 Demo-QuartzNetDeploy
Node Address Status Type Build Protocol DC SegmentWeidaicheng-PC 127.0.0.1:8301 alive server 1.0.7 2 dc1 <all>

在Jexus官方网址找到安装Jexus的授命

图片 4图1

/** * ECharts地图 * @param {Object} dataPoint 点数据 * @param {Object} dataLine 线数据 * @param {Object} title 标题 */function MyEChartsMap(dataPoint, dataLine,title) { // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById("ServerStateData")); $("#ServerState").html; var option = new Object(); //配置信息 option = { tooltip: { formatter: function { //这里如果不希望内容在一行显示也可以自定义css switch(params.seriesType) { case "scatter": //点提示信息 return "站点名称:" + params.name + ",说明:" + params.value.toString().split[2]; break; case "lines": //线提示信息 return params.data['fromName'] + "~" + params.data['toName']; break; case "map": //面提示信息 return "区域:" + params.name + ",指数:" + params.value; break; } } }, /*地图设置*/ visualMap: { min: 0, //最小颜色 max: 1500, //最大颜色 left: 'left', top: 'bottom', text: ['High', 'Low'], seriesIndex: [1], inRange: { color: ['#e0ffff', '#FFFFCC'] //色彩区间 }, calculable: true }, geo: { map: 'china', roam: true, label: { normal: { show: true, textStyle: { color: 'rgba(0,0,0,0.4)' } } }, itemStyle: { normal: { borderColor: 'rgba(0, 0, 0, 0.2)' }, emphasis: { areaColor: null, shadowOffsetX: 0, shadowOffsetY: 0, shadowBlur: 20, borderWidth: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }, /*地图设置结束*/ /*数据源*/ series: [ //点数据 { type: 'scatter', //类型,表示点数据 coordinateSystem: 'geo', data: convertPointData(dataPoint), //数据源 symbolSize: 8, //标记点大小 //标记样式:可使用svg图标 symbol: 'path://M512 64C306.4 64 140 230.4 140 436c0 101.6 40.8 194.4 107.2 261.6L512 960l264-263.2c66.4-67.2 107.2-159.2 107.2-261.6C884 230.4 717.6 64 512 64z m128 331.2c-4.8 62.4-54.4 112-116.8 116.8-75.2 6.4-138.4-53.6-138.4-127.2 0-70.4 57.6-128 128-128 73.6 0 133.6 63.2 127.2 138.4z', //symbol: 'path://M877.632 456.8c14.976-14.72 20.384-32.96 14.816-49.984-5.536-17.024-20.608-28.544-41.344-31.584l-190.24-27.84c-6.976-1.024-18.464-9.472-21.6-15.904l-85.12-173.696c-9.28-18.944-24.896-29.76-42.88-29.76-17.952 0-33.6 10.816-42.816 29.76l-85.12 173.696c-3.104 6.432-14.592 14.848-21.6 15.904l-190.24 27.84c-20.704 3.04-35.776 14.56-41.344 31.584-5.568 17.024-0.16 35.232 14.816 49.984l137.696 135.232c5.088 4.992 9.536 18.816 8.32 25.92l-32.48 190.912c-3.552 20.832 2.752 38.816 17.344 49.344 7.52 5.44 16.224 8.16 25.472 8.16 8.576 0 17.6-2.336 26.56-7.04l170.176-90.176c6.048-3.2 20.448-3.2 26.528 0l170.144 90.112c18.528 9.856 37.504 9.44 52.064-1.056 14.56-10.528 20.864-28.48 17.344-49.28l-32.48-190.976c-1.28-7.104 3.2-20.928 8.32-25.92l137.664-135.232z', //角度信息 symbolRotate: 0, //鼠标选中说明 label: { normal: { formatter: '{b}', //tooltip显示,自定义参考上方例子 position: 'left', //对齐 show: false //是否一直显示 }, emphasis: { show: true } }, itemStyle: { normal: { color: '#F06C00' //颜色信息 } } }, //底图数据-蓝色部分。 { name: 'categoryA', type: 'map', geoIndex: 0, data: [{ name: '北京', value: randomValue() }, // randomValue() 表示一个随机的颜色数据,如需固定颜色请修改为确定的数字 { name: '天津', value: randomValue() }, // 颜色设置参考visualMap模块 { name: '上海', value: randomValue() }, { name: '重庆', value: randomValue() }, { name: '河北', value: randomValue() }, { name: '河南', value: randomValue() }, { name: '云南', value: randomValue() }, { name: '辽宁', value: randomValue() }, { name: '黑龙江', value: randomValue() }, { name: '湖南', value: randomValue() }, { name: '安徽', value: randomValue() }, { name: '山东', value: randomValue() }, { name: '新疆', value: randomValue() }, { name: '江苏', value: randomValue() }, { name: '浙江', value: randomValue() }, { name: '江西', value: randomValue() }, { name: '湖北', value: randomValue() }, { name: '广西', value: randomValue() }, { name: '甘肃', value: randomValue() }, { name: '山西', value: randomValue() }, { name: '内蒙古', value: randomValue() }, { name: '陕西', value: randomValue() }, { name: '吉林', value: randomValue() }, { name: '福建', value: randomValue() }, { name: '贵州', value: randomValue() }, { name: '广东', value: randomValue() }, { name: '青海', value: randomValue() }, { name: '西藏', value: randomValue() }, { name: '四川', value: randomValue() }, { name: '宁夏', value: randomValue() }, { name: '海南', value: randomValue() }, { name: '台湾', value: randomValue() }, { name: '香港', value: randomValue() }, { name: '澳门', value: randomValue() } ] }, //线数据01 -- 正常 { tooltip: {}, type: 'lines', zlevel: 20, symbol: ['none', 'arrow'], symbolSize: 6, //动画 effect: { show: true, period: 3, trailLength: 0, //移动点样式。可使用预制,也可使用svg自定义。 //symbol: 'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z', symbol: 'triangle', symbolSize: 6 }, lineStyle: { normal: { type: 'solid', color: '#a6c84c', //线条颜色 width: 1, opacity: 0.6, curveness: 0.2 } }, data: convertLineData(dataLine, dataPoint, 0) }, //线数据02 --损坏 { tooltip: {}, type: 'lines', zlevel: 20, symbol: ['none', 'arrow'], symbolSize: 6, //动画效果--异常线路不显示动画 effect: { show: false, period: 3, trailLength: 0, //symbol: 'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z', symbol: 'triangle', symbolSize: 6 }, lineStyle: { normal: { type: 'dashed', color: '#FF3333', //线条颜色 width: 1, opacity: 0.6, curveness: 0.2 } }, data: convertLineData(dataLine, dataPoint, 1) } ] }; myChart.setOption(option, true); //绑定单击事件 myChart.on('click', function { switch(params.seriesType) { case "lines": //单击线 alert(params.data['fromName'] + "~" + params.data['toName']); break; //单击面 case 'map': alert(params.name); break; //单击点 case "scatter": alert("站点名称:" + params.name + ",说明:" + params.value.toString().split; break; } });}/** * 组合点数据 * @param {Object} data */function convertPointData { var res = []; for(item in data) { res.push({ name: data[item].name, value: [data[item].log, data[item].lat, data[item].remark] }); } return res;}/** * 组合线数据 * @param {Object} dataline 线数据 * @param {Object} datapoint 点数据 * @param{Object} type 线类型 */function convertLineData(dataline, datapoint, type) { var res0 = []; var res1 = []; for(var i = 0; i < dataline.length; i++) { var fromName = dataline[i].fromName; var toName = dataline[i].toName; var state = dataline[i].state; if(state == 0) { res0.push({ fromName: fromName, toName: toName, coords: [SearchData(fromName, datapoint), SearchData(toName, datapoint)] }) } else { res1.push({ fromName: fromName, toName: toName, coords: [SearchData(fromName, datapoint), SearchData(toName, datapoint)] }) } } if(type == 0) { return res0; } else { return res1; }};/** * 在点数据中查找对应数据经纬度 * @param {Object} name * @param {Object} datapoint */function SearchData(name, datapoint) { var value = []; var i = 0; while(i < datapoint.length) { if(name == datapoint[i].name) { value.push(datapoint[i].log, datapoint[i].lat); break; } else { i++; continue; } } return value;}//随机颜色函数function randomValue() { return Math.round(Math.random;}

近年来 Quartz.NET 最新版本已经 3.0.4 ,从 3.0 开首已经支撑 .NET Core,所以在 .NET 版本 和 陈设意况上都有越多的挑三拣四。上边分别介绍基于.NET Framework 的 Windows 处境安顿 和 基于.NET Core 的 Linux 情形安顿。

在consul所在的目录下开创文件夹 consul.d,文件夹地方及文件夹名称能够私自,步向consul.d文件夹中开创多个json文件 Count_1.jsonCount_2.json,分别拉长如下文本

将sqlcmd增多到近日顾客的情况变量中4、使用 sqlcmd -S localhost -U sa 连接mssql,之后输入刚才设置的mssql密码,如下

出于顾客只给了大家两台服务器,大家直接在郁结虚多少个容器出来,达到财富选取最大化。

MyEChartsMap(testPointdata, testLinedata, '服务器状态');

本文由必赢网上注册发布于必赢网上注册,转载请注明出处:学业调节,MVC踩坑日记

关键词:

中AES加密的达成,core下对于Excel的有个别操作及

相对于上传,下载就相比轻易了,找到钦定的文书,转变到流,通过.netcore自带的 File 主意重回流文件,完毕文件下载...

详细>>

NLog初识使用,队列练习必赢网上注册:

PM Install-Package Nlog 设置扩大 NLog初识使用,队列练习必赢网上注册:。图片.png 代码片段 运维结果 ?xml version="1.0" enc...

详细>>

ECharts柱状图恐怕折线图方法封装,VS2017利用天猫

书本上介绍的vs二零一五,这里运用vs2017,具体运用功能是大同小异的。安装好了.netcore sdk,具体使用哪个编辑器是冷...

详细>>

爬豆瓣音乐,作业调治

1.新建项目; 如下图,基于OWIN,Web Framework 不再依靠 IIS 和OS,那象征理论上您能够选取任何其它 Web Server 来替换 II...

详细>>