ASP.NET Core

Windows平台部署 Asp.Net Core 3.1.0,将 ASP.NET Core 应用发布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core

孤街醉人 提交于 2020-05-07 11:52:37
第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用。   官方文档地址: https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio 本教程涵盖以下主题: 在 Windows Server 上安装.NET Core Hosting Bundle。 在 IIS 管理器中创建 IIS 站点。 部署 ASP.NET Core 应用。 我概况一下,主要是安装2个文件: 1、安装 . NET Core SDK 安装在开发计算机上( dotnet-sdk-3.1.100-win-x64.exe )        下载地址: https://dotnet.microsoft.com/download 。选择 Download .NET Core SDK 这个版本进行安装就可以。 2、安装 .NET Core 托管捆绑包(dotnet-hosting-3.1.0.exe)。使用以下链接下载安装程序: 下载地址: 当前 .NET Core 托管捆绑包安装程序(直接下载) https://www.microsoft.com/net/permalink/dotnetcore-current-windows

在WinForms里嵌入MediaPlayer的一些版本问题, tlbimp导入, 以及不导入而纯用C#+字符串来动态调用.

孤者浪人 提交于 2020-05-07 08:57:19
网上很多写使用WindowsMediaPlayer WMP控件的文章. 大多数都是从工具栏或COM导入. 最近正在做的CEF整合Asp.Net Core Blazor server side的过程中, 因为CEF编译支持mp4的dll是涉及了版权的问题, 不能随便干的. 要播放mp4, 可以用WinForms代劳. 执行WMP只是一小段代码, 不想导入dll , 去查API. 发现了微软的官方文档, 和我使用的MediaPlayer的API , 有出入. ? 经过多方查证, 验证, 发现原来 MediaPlayer 一共是2个版本 一个是最后到 6.4 的 classic 版本, 一个是从 7 之后的新版本. OK, 以下只是纪录以下两者的区别 首先参考这个: http://w3schools.sinsixx.com/media/media_playerref.asp.htm 6.4 7或以后 CLSID 22D6F312-B0F6-11D0-94AB-0080C74C7E95 6BF52A52-394A-11D3-B153-00C04F79FAA6 TypeLib c:\windows\system32\msdxm.tlb C:\Windows\system32\wmp.dll TypeLib MediaPlayer WMPLib ProgID   MediaPlayer

关于单元测试的思考--Asp.Net Core单元测试最佳实践

删除回忆录丶 提交于 2020-05-06 09:13:18
在我们码字过程中,单元测试是必不可少的。但在从业过程中,很多开发者却对单元测试望而却步。有些时候并不是不想写,而是常常会碰到下面这些问题,让开发者放下了码字的脚步: 这个类初始数据太麻烦,你看:new MyService(new User("test",1), new MyDAO(new Connection(......)),new ToManyPropsClass(......) .....) 。我:。。。 这个代码内部逻辑都是和Cookie有关,我单元测试不好整啊,还是得启动到浏览器里一个按钮一个按钮点。 这个代码内部读了配置文件,单元测试也不能给我整个配置文件啊? 这个代码主要是验证WebAPI入口得模型绑定,必须得调用一次啊? 这些问题确实存在,但它们阻止不了我们那颗要写单元测试的心。单元测试的优点很多,你或许可以不管。但至少能让你从那些需要在浏览器里点击10多下的操作里解脱出来。 本文从一个简单的逻辑测试出发,慢慢拉开测试的大幕,让你爱上测试。文章主要是传播一些单元测试的理念,其次才是介绍asp.net core中的单元测试。 本文使用的环境为asp.net core 2.1 webapi,代码可以直接下载: https://github.com/yubaolee/DotNetCoreUnitTestSamples 为了方便阅读,以一个最简单的逻辑为例: public

从壹开始前后端分离 [.netCore 填坑 ] 三十四║Swagger:API多版本控制,带来的思考

你。 提交于 2020-05-06 08:50:38
前言 大家周二好呀,.net core + Vue 这一系列基本就到这里差不多了,今天我又把整个系列的文章下边的全部评论看了一下(我是不是很负责哈哈),提到的问题基本都解决了,还有一些问题,已经在QQ群里讨论过了,今天再写一篇,然后给这个系列画一个暂时的句号吧,这些天也考虑写点儿啥,希望看到的小伙伴给点儿意见哟,其实我也是能力有限,不敢保证精通,不过只要想学,基本都能学到点儿东西的,至少至少能给大家在繁忙或者无聊的开发生涯中,多一点儿学习的动力吧,至少群里边的小伙伴是这样(马上破百了,快来加入我们吧),目前写的都是浅显的,打算下一步向架构师微服务方向简单拓展下,这两天简单看了一下,真是云里来雾里去,不是很通俗,还得自己啃,一起加油吧!!! 1、什么是版本控制 这个词语大家已经不会陌生,平时开发的时候,一定会用到过 Git 、SVN 或者 VSS (这三个我都用过,Git 应该是最好的),这个就是源代码的版本控制。 来句官方定义:版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。 那今天我们说的,就是 api接口的版本控制,这个大家一定也都接触到了,在我们使用的 swagger 中是这样的: 2、api版本控制的好处 简单来说,接口是APP的重要组成部分,数据是APP的核心,接口是连接APP和数据的纽带(这里的 APP

.NET Core 图片操作在 Linux/Docker 下的坑

谁说我不能喝 提交于 2020-05-06 08:44:33
一.前言 .NET Core 目前更新到2.2了,但是直到现在在 .NET Core 本身依然不包括和图片有关的 Image、Bitmap 等类型。对于图片的操作在我们开发中很常见,比如:生成验证码、二维码等等。在 .NET Core 的早期版本中,有 .NET 社区开发者实现了一些 System.Drawing 的 Image等类型实现的组件,比如 CoreCompat.System.Drawing 、 ZKWeb.System.Drawing 等。后来微软官方提供了一个组件 System.Drawing.Common 实现了 System.Drawing 的常用类型,以 Nuget 包的方式发布的。今天就围绕它来讲一讲这里面的坑。 在 .NET Core 中可以通过安装 System.Drawing.Common 来使用 Image、Bitmap 等类型。 二.寻坑 本文将以一个 ASP.NET Core 项目使用 QRCoder 组件来生成一个二维码作为示例。 1.新建一个 ASP.NET Core 项目 2.安装 QRCoder dotnet add package QRCoder QRCoder是一个非常强大的生成二维码的组件,它使用了 System.Drawing.Common ,所以安装它用来做测试。 3.打开 ValuesController ,添加如下代码:

ASP.NET Core如何在ActionFilterAttribute里做依赖注入

我们两清 提交于 2020-05-06 08:28:38
在ASP.NET Core里,我们可以使用构造函数注入很方便地对Controller,ViewComponent等部件做依赖注入。但是如何给过滤器ActionFilterAttribute也用上构造函数注入呢? 问题 我的博客系统里有个用来删除订阅文件缓存的ActionFilter,想要在发生异常的时候记录日志。我的博客用的日志组件是NLog,因此不使用依赖注入的话,就直接使用LogManager.GetCurrentClassLogger()获得一个Logger的实例。整个过滤器的代码如下: public class DeleteSubscriptionCache : ActionFilterAttribute { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); public override void OnActionExecuted(ActionExecutedContext context) { base.OnActionExecuted(context); DeleteSubscriptionFiles(); } private void DeleteSubscriptionFiles() { try { // ... } catch (Exception e) {

ASP.NET Core 中读取 Request.Body 的正确姿势

扶醉桌前 提交于 2020-05-06 08:28:12
ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream —— 不允许 Request.Body.Position=0 ,这就意味着只能读取一次,要想多次读取,需要借助 MemoryStream ,详见博问 asp.net core中2次读取Request.Body的问题 using ( var buffer = new MemoryStream()) { Request.Body.CopyTo(buffer); buffer.Position = 0 ; buffer.CopyTo(writer.BaseStream); Console.WriteLine( " Request.Body: " ); buffer.Position = 0 ; buffer.CopyTo(Console.OpenStandardOutput()); } 昨天读了博文 Reading request body in ASP.NET Core 之后得知在 ASP.NET Core 2.0 中已经针对这个问题提供了解决方法 —— EnableRewind() ,只要启用倒带功能,就可以让 Request.Body 回归正常 Stream 。 使用非常简单,引用命名空间 Microsoft.AspNetCore.Http.Internal

如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容?

给你一囗甜甜゛ 提交于 2020-05-06 08:27:47
文章名称: 如何在ASP.NET Core自定义中间件读取Request.Body和Response.Body的内容? 作者: Lamond Lu 地址: https://www.cnblogs.com/lwqlun/p/10954936.html 源代码: https://github.com/lamondlu/webapi-logger 背景 最近在徒手造轮子,编写一个ASP.NET Core的日志监控器,其中用到了自定义中间件读取Request.Body和Response.Body的内容,但是编写过程,并不像想象中的一帆风顺,ASP.NET Core针对Request.Body和Response.Body的几个特殊设计,导致了完成以上功能需要绕一些弯路。 原始代码 为了读取Request.Body和Response.Body的内容,我的实现思路如下: 创建一个LoggerMiddleware的中间件,将它放置在项目中间件管道的头部。因为根据ASP.NET Core的中间件管道设计,只有第一个中间件才能获取到原始的请求信息和最终的响应信息。 Request.Body和Response.Body属性都是Steram类型, 在LoggerMiddleware中间件的 InvokeAsync 方法中,我们可以分别使用 StreamReader 读取Request

ASP.NET Core 入门(2)(WebApi接口请求日志 Request和Response)

无人久伴 提交于 2020-05-06 08:27:24
以前 . NET Framework WebApi 记录接口访问日志,一般是通过Filter的方式进行拦截,通过重写ActionFilterAttribute的OnActionExecuting实现拦截记录Request内容,通过重写OnActionExecuted实现拦截记录Response内容,具体实现代码就不贴了。这篇简单介绍.Net Core WebApi 下通过中间件的拦截方式记录接口访问日志,关键部分是通过读取获取 Request.Body 时需要开启 Request.EnableRewind () 启用倒带功能;读取 Response.Body 时需要用到的技巧,详细看代码。该例子中我使用的日志组件是Log4Net,获取到的信息通过Log4Net保存到本地文件。 创建日志类 using System; using System.Collections.Generic; using System.Linq; namespace DYDGame.Web.Host { public class RequestResponseLog { public string Url { get ; set ;} public IDictionary< string , string > Headers { get ; set ; } = new Dictionary< string ,

.net core 从 ActionFilterAttribute 获取Request.Body 的正确方式

我的未来我决定 提交于 2020-05-06 07:14:51
由于 ModelBinding在动作过滤器之前运行,直接使用 context.ActionArguments["parameter"] 获取模型对象 This article shows how to use an ActionFilter to validate the model from a HTTP POST request in an ASP.NET Core MVC application. Code: https://github.com/damienbod/AngularAutoSaveCommands 2019-07-31: Updated to ASP.NET Core 3.0 Preview 7, Updated to Angular 8.1.3 2019-02-16: Updated to Angular 7.2.4, ASP.NET Core 2.2 nuget packages 2018-11-22: Updated to Angular 7.1.0, nuget packages 2018-09-28: Updated to ASP.NET Core 2.1.4 and Angular 6.1.9 2018-06-16: Updated to ASP.NET Core 2.1 and Angular 6.0.5 2018-02-11: Updated