iis

Asp.net SignalR 让实时通讯变得如此简单

 ̄綄美尐妖づ 提交于 2020-05-02 20:20:30
巡更项目中,需要发送实时消息,以及需要任务开始提醒,于是便有机会接触到SignalR,在使用过程中,发现用SignalR实现通信非常简单,下面我思明将从三个方面分享一下: 一、SignalR是什么 Asp.net SignalR是微软为实现实时通信的一个类库。一般情况下,SignalR会使用JavaScript的长轮询(long polling)的方式来实现客户端和服务器通信,随着Html5中WebSockets出现,SignalR也支持WebSockets通信。另外SignalR开发的程序不仅仅限制于宿主在IIS中,也可以宿主在任何应用程序,包括控制台,客户端程序和Windows服务等,另外还支持Mono,这意味着它可以实现跨平台部署在Linux环境下。 SignalR内部有两类对象: Http持久连接(Persisten Connection)对象:用来解决长时间连接的功能。还可以由客户端主动向服务器要求数据,而服务器端不需要实现太多细节,只需要处理PersistentConnection 内所提供的五个事件:OnConnected, OnReconnected, OnReceived, OnError 和 OnDisconnect 即可。 Hub(集线器)对象:用来解决实时(realtime)信息交换的功能,服务端可以利用URL来注册一个或多个Hub,只要连接到这个Hub

.Net Core Web Api实践(二).net core+Redis+IIS+nginx实现Session共享

偶尔善良 提交于 2020-05-02 18:35:00
前言:虽说公司app后端使用的是.net core+Redis+docker+k8s部署的,但是微信公众号后端使用的是IIS部署的,虽说公众号并发量不大,但领导还是使用了负载均衡,所以在介绍docker+k8s实现分布式Session共享之前,就先介绍一下IIS+nginx实现Session共享的方案,两者其实区别不大,所以这篇着重介绍方案,下篇介绍测试的区别以及填坑的方式。 1、环境准备 操作系统:Windows10 IIS:需要安装模块 VS2019、本地Redis数据库、ngnix(windows版) 2、Session共享的简易说明 下图简要说明了负载均衡通过轮询方式,将同一个客户端请求发送到不同的站点下,操作的Session应该是同一个。 3、添加测试项目 虽然个人认为本来WebApi中使用Session本身就是一种不合理的设计,但这是旧项目迁移需要保留的历史逻辑,所以只能硬着头皮寻找对应的解决方案了。 在VS2019中添加一个.net core 的WebApi项目,使用Session的话需要添加以下配置。 Startup.cs类中,ConfigureServices方法添加services.AddSession(); Configure方法中添加app.UseSession(); 注意要放到UseMVC方法前面。 测试代码如下,添加testController类

Difference between RouteTable.Routes and HttpConfiguration.Routes?

两盒软妹~` 提交于 2020-05-02 18:27:40
https://stackoverflow.com/questions/12533782/difference-between-routetable-routes-and-httpconfiguration-routes The HttpConfiguration class is specific to WebApi making it reusable outside of IIS (e.g. For self hosting). The RouteTable version is for IIS only. https://stackoverflow.com/questions/23381962/routetable-routes-vs-httpconfiguration-routes RouteTable is the underlying structure for routing used by asp.net/System.Web. When you run on IIS using ASP.NET (which is the default template in Visual Studio) the routes are written to the routetable, and WebHost is used to shim between ASP.Net

Python多进程和多线程(跑满CPU)

谁说胖子不能爱 提交于 2020-05-02 09:24:34
[TOC] Python多进程和多线程(跑满CPU) 转载自: https://www.liaoxuefeng.com/wiki/1016959663602400/1017627212385376 Python 多进程和多线程(跑满 CPU **)** 概念 任务可以理解为进程(process),如打开一个word就是启动一个word进程。在一个word进程之中不只是进行打字输入,还需要拼写检查、打印等子任务,我们可以把进程中的这些子任务称为线程(thread)。 由于每个进程至少要干一件事,那么一个进程至少有一个线程,有时候有的复杂进程有多个线程,在进程中的多个线程是可以同时执行的。多线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。当然,真正地同时执行多线程需要多核CPU才可能实现。 总结一下就是,多任务的实现有3种方式: 多进程模式; 启动多个进程,每个进程虽然只有一个线程,但多个进程可以一块执行多个任务。 多线程模式 启动一个进程,在一个进程内启动多个线程,这样,多个线程也可以一块执行多个任务。 多进程+多线程模式。 启动多个进程,每个进程再启动多个线程,这样同时执行的任务就更多了,当然这种模型更复杂,实际很少采用。同时执行多个任务通常各个任务之间并不是没有关联的,而是需要相互通信和协调,有时

PCB DotNetCore Swagger生成WebAPI文档配置方法

匆匆过客 提交于 2020-05-02 08:29:12
在.net framework框架下可以使用WebApiTestClientWebApi生成WebAPI接口文档与方便接口测试用,而在DotnetCore却没有找到这个工具了,baidu查找一下发现有一个相类似的工具,它就是Swagger,和使用WebApiTestClientWebApi差不多的,这里Swagger配置过程整理如下: 一.下载Swashbuckle.AspNetCore NuGet下载安装Swashbuckle.AspNetCore 二.Startup.cs代码修改 1.ConfigureServices方法加入 Swagger新增以下代码 // 运行时调用此方法。使用此方法向容器中添加服务。 public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); // Swagger新增代码 services.AddSwaggerGen(options => { // API文档信息 options.SwaggerDoc( " v1 " , new Info { Version = " V1 " , Title = " PCB WebApi " ,

处理ajax调用不了webService的问题

自闭症网瘾萝莉.ら 提交于 2020-05-02 06:38:03
写一个webService做为后台,然后前台用ajax调用,无论怎么调用都报abort的错误。然后开始排查错误原因。 1、把之前项目中已经可以正常调用的代码复制、粘贴过来,然后把地址换成现在这个地址,发现报错abort。就说明是后台的问题了。 2、在试着把后台的代码复制到之前能够正常运行的后台上面,然后通过之前的webService的地址去调用这个接口,发现可以正常调用了,这说明是新建的这个webService的问题。 3、然后通过对比发现,在新的webService中,要添加一些配置才能够正常被调用,否则就会一直地报错。 4、修改web.config文件下面的<system.webServer>,在里面添加如下配置,就能正常的被调用了。 < add name ="Access-Control-Allow-Methods" value ="OPTIONS,POST,GET" /> < add name ="Access-Control-Allow-Headers" value ="x-requested-with,content-type" /> < add name ="Access-Control-Allow-Origin" value ="*" /> 5、附加完整的配置 < system.webServer > < httpProtocol > < customHeaders

在IIS上部署你的ASP.NET Core项目

 ̄綄美尐妖づ 提交于 2020-05-02 06:34:32
概述 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,随后就将接收到的请求推送至中间件管道中去,处理完你的请求和相关业务逻辑之后再将HTTP响应数据重新回写到IIS中,最终转达到不同的客户端(浏览器,APP,客户端等)。而配置文件和过程都会由些许调整,中间最重要的角色便是AspNetCoreModule,它是其中一个的IIS模块,请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中,所以这时候我们无需设置应用程序池来托管我们的代码,它只负责转发请求而已。 部署之前要确保你的IIS上已经安装了AspNetCoreModule托管模块,如果没有的话,点击 这里 进行下载并安装 一、安装IIS 1、在控制面板→程序→启用或关闭Windows功能→勾选Internet Information Services以及Web管理工具下的IIS管理控制台 二、发布项目 1、发布我们上一篇建好的ASP.NET Core API项目,然后选择IIS,新建一项发布配置 2、发布方法选择文件系统,然后设置一个发布路径 3、配置文件可以根据你线上、线下的环境进行选择,因为是基于.NET

Window 无法完成请求的更改,找不到引用的汇编,错误代码 0X80073701

依然范特西╮ 提交于 2020-05-02 06:31:37
window 10专业版,通过“启用和关闭Window功能”进行安装IIS的部分功能的时候报错: Window 无法完成请求的更改,找不到引用的汇编,错误代码 0X80073701 备注以及尝试: (1)Windows Modules Installer服务 是启动状态的 (2)使用下列命令检查,也没有发现问题: dism /online /cleanup-image /scanhealth dism /Online /cleanup-image /checkhealth 下面是CMD的结果: C:\Windows\system32>dism /online /cleanup-image /scanhealth 部署映像服务和管理工具 版本: 10.0.17763.1 映像版本: 10.0.17763.253 [==========================100.0%==========================] 未检测到组件存储损坏。 操作成功完成。 C:\Windows\system32>dism /Online /cleanup-image /checkhealth 部署映像服务和管理工具 版本: 10.0.17763.1 映像版本: 10.0.17763.253 未检测到组件存储损坏。 操作成功完成。 (3)下列命令是试过了: dism /online

如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列...

▼魔方 西西 提交于 2020-05-02 05:51:41
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不喜勿喷,或许对您有帮助。 在Visual Studio 2017配置支持C# 7+语法 心想都VS2017了肯定是支持C# 7+语法,然后接着将控制台程序修改为异步,然后告知于我不行,尼玛这不是扯淡了么,如下: public class Program { public static async Task Main(string[] args) { using (var context = new EFCoreDbContext()) { var blog = await context.Blogs.FindAsync(3); blog.Name = "Jeffcky"; var result = await context.SaveChangesAsync(); } Console.ReadKey(); } } 然后得知.NET Framework 4.7可以使用C# 7语法,心想难道是没装.NET Framework 4.7么,于是乎到如下地址下载.NET Framework 4.7( https://www.microsoft.com/zh-CN/download/details

发布后的项目打开swagger

纵饮孤独 提交于 2020-05-02 05:41:22
使用netcore作为纯后端提供api已经变得越来越频繁,swagger也成为很多人的选择。通常会在代码中限制ASPNETCORE_ENVIRONMENT为Production时关闭swagger。但是往往我们需要将api发布到本地iis调试或供他人使用时,swagger将会被禁止。发布后项目往往默认为Production环境,将其修改为Development即可解决。 解决方法 打开发布到iis的文件夹下的web.config文件,添加以下代码: <environmentVariables> <environmentVariable name= " ASPNETCORE_ENVIRONMENT " value= " Development " /> </environmentVariables> 修改后的web.config结构大致如下: <?xml version= " 1.0 " encoding= " utf-8 " ?> <configuration> <location path= " . " inheritInChildApplications= " false " > <system.webServer> <handlers> <add name= " aspNetCore " path= " * " verb= " * " modules= "