自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 收藏
  • 关注

原创 .net core 使用 mongodb(nosql) 数据库

首先运行mongodb服务器安装包安装MongoDB.Driver包建立模型public class Book { // 指定该字段为 mongoddb Id [BsonId] // 指定该字段的类型为 ObjectId (24位字符串) [BsonRepresentation (BsonType.ObjectId)] public string Id { get; set; } // 指定该字段的名称为 Name [BsonElement

2020-07-30 12:11:05 504

原创 .net core XSRF 攻击与防伪令牌

参考文档:https://www.cnblogs.com/tdfblog/p/aspnet-core-security-anti-request-forgery.htmlXSRF攻击利用浏览器访问某一站点会发送该站点的所有Cookie的原理站点B的form表单指向站点A,form的内容是B想执行的内容,当用户不经意间点了提交,浏览器将form发送至A,并携带A的cookie,而A的身份验证刚好是利用cookie来保存,那么B顺利执行其想执行的内容XSRF防护原理站点A在生成form的时候,添加了

2020-07-30 12:08:49 454

原创 .net core 应用单页

public IServiceProvider ConfigureServices (IServiceCollection services) { // 注册单页文件 services.AddSpaStaticFiles (configuration => { // 指定单页文件的路径 configuration.RootPath = "ClientApp/build"; });}public void Configure (IAppli

2020-07-30 12:05:38 412

原创 .net core 过滤器

筛选器类型每种筛选器类型都在筛选器管道中的不同阶段执行。授权筛选器:最先运行,用于确定是否已针对当前请求为当前用户授权。 如果请求未获授权,它们可以让管道短路。资源筛选器:是授权后最先处理请求的筛选器。 出于性能方面的考虑,可以使用它们来实现缓存或以其他方式让筛选器管道短路。 它们在模型绑定之前运行,所以可以影响模型绑定。操作筛选器:可以在调用单个操作方法之前和之后立即运行代码。 它们可用于处理传入某个操作的参数以及从该操作返回的结果。异常筛选器:用于在向响应正文写入任何内容之前,对未经处理的异常

2020-07-30 12:04:42 819

原创 .net core 内存缓存

安装包Microsoft.Extensions.Caching.Memory在setup中注册服务public void ConfigureServices (IServiceCollection services) { services.AddMemoryCache (); ...}使用public class ValuesController : ControllerBase { private IMemoryCache _cache; public V

2020-07-30 12:00:19 896

原创 .net core 分布式缓存

IDistributedCache接口IDistributedCache表示分布式缓存接口,其接口如下:public interface IDistributedCache{ // 获取键为key的缓存项 byte[] Get(string key); Task<byte[]> GetAsync(string key, CancellationToken token = default); // 移除键为key的缓存项 void Remove(st

2020-07-30 11:57:36 701

原创 .net core 代理配置

在具有代理的Http请求中,浏览器的ip和请求协议(http、https)被隐藏在X-Forwarded-*字段中,而字段Remote Address为代理服务器的地址,请求协议(http、https)为代理服务器的请求协议如果想将这些信息设置为浏览器的请求信息,请应用如下中间件.net core 中间件在中间件的开始,应用如下中间件app.UseForwardedHeaders(new ForwardedHeadersOptions{ // 将XForwardedFor和XForward

2020-07-30 11:53:48 730

原创 .net core 程序集的加载与卸载

.net core 2.0支持程序集动态加载,.net core 3.0支持程序集动态卸载程序集动态加载卸载使用AssemblyLoadContext每个程序都具有一个默认的AssemblyLoadContext,AssemblyLoadContext包含以加载的程序集集合,当AssemblyLoadContext被卸载时,对应的程序集也会在下一次GC回收时被回收要创建新的AssemblyLoadContext需要实现AssemblyLoadContextpublic class ActuatorA

2020-07-30 11:52:56 1176

原创 .net core 约定与修改

约定能做什么?约定在控制器生成前运行,我们可以修改默认的约定,如我们可以向控制器统一添加路由前缀IApplicationModelConvention 接口public interface IApplicationModelConvention{ void Apply(ApplicationModel application);}这个接口就是主要是用来自定义一些 MVC 约定的一些东西的, Apply这个方法传入一个ApplicationModel对象,我们可以利用这个对象来修改我们需要

2020-07-30 11:50:51 489

原创 .net core webapi 结果统一封装

统一返回格式需要用到IResultFilter过滤器,如下我们对webape的返回结果封装到AjaxResponse中public class AddHeaderFilterWithDi : IResultFilter { private ILogger _logger; public AddHeaderFilterWithDi (ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger&l

2020-07-30 11:44:50 1638

原创 20 .net core 单元测试

Xunit 单元测试环境搭建1.在解决方案下新建一个xUnit 测试项目2.添加引用XUnit,编写单元测试代码,在方法上加上[Fact],代表该方法是运行测试时需要执行的方法。3.编写单元测试代码后,右键点击“运行测试“”,即可执行单元测试,测试代码在后台直接运行,如果是点击“调试测试”,即可对测试单元进行断点调试4.运行测试后,右侧“测试资源管理”会显示提取到的测试方法,同时显示执行情况,包括失败原因,vs下方的输出中会显示执行相关的详细信息...

2020-07-29 11:51:55 588

原创 19 .net core 认证与授权

一、固定角色:即把角色与具体的Controller或Action直接关联起来,整个系统中的角色是固定的,每种角色可以访问那些Controller或Action也是固定的,这做法比较适合小型项目,角色分工非常明确的项目。public void ConfigureServices (IServiceCollection services) { services.AddMvc (); // 添加认证Cookie信息 services.AddAuthentication (Cookie

2020-07-29 11:49:56 707

原创 18 .net core 访问HttpContext

通过控制器使用 HttpContextpublic class HomeController : Controller{ public IActionResult About() { var pathBase = HttpContext.Request.PathBase; // Do something with the PathBase. return View(); }}通过中间件使用 HttpContextpubli

2020-07-29 11:45:35 1006

原创 17 .net core 请求功能

功能接口ASP.NET Core 在 Microsoft.AspNetCore.Http.Features 中定义了许多 HTTP 功能接口,服务器使用这些接口来标识其支持的功能:IHttpRequestFeature 定义 HTTP 请求的结构,包括协议、路径、查询字符串、标头和正文。IHttpResponseFeature 定义 HTTP 响应的结构,包括状态代码、标头和响应的正文。IHttpAuthenticationFeature 定义支持基于 ClaimsPrincipal 来标识用户并指

2020-07-29 11:44:10 954

原创 16 .net core http请求

可以注册 IHttpClientFactory 并将其用于配置和创建应用中的 HttpClient 实例系统必备面向.NET Framework 的项目要求安装 Microsoft.Extensions.Http NuGet 包。面向 .NET Core 且引用 Microsoft.AspNetCore.App 元包的项目已经包括 Microsoft.Extensions.Http 包。基本用法注册服务services.AddHttpClient();依赖注入public class Ba

2020-07-29 11:41:40 3740

原创 15 .net core本地化

引用包添加对 OrchardCore.Localization.Core NuGet 包的引用。注册服务将所需服务添加到 Startup.cs 的 ConfigureServices 方法:public void ConfigureServices (IServiceCollection services) { services.AddMvc () .AddViewLocalization (LanguageViewLocationExpanderFormat.Suffix)

2020-07-29 11:38:35 367

原创 14 .net core 存储库模式

自定义存储库定义Character实体public class Character{ public Character(string name) { Name = name; } [Key] public Guid Id { get; private set; } = Guid.NewGuid(); public string Name { get; private set; } = String.Empty;}定义存储库接口p

2020-07-29 11:35:01 294

原创 13 .net core Kestrel服务器

Kestrel 是一个跨平台的适用于 ASP.NET Core 的 Web 服务器。何时结合使用 Kestrel 和反向代理可以单独使用 Kestrel,也可以将其与反向代理服务器(如 IIS、Nginx 或 Apache)结合使用。 反向代理服务器接收到来自 Internet 的 HTTP 请求,并在进行一些初步处理后将这些请求转发到 Kestrel。如何在 ASP.NET Core 应用中使用 Kestrel默认情况下,ASP.NET Core 项目模板使用 Kestrel。 在 Progr

2020-07-29 11:32:30 455

原创 12 .net core 会话和应用状态

状态管理可以使用几种方法存储状态。 本主题稍后将对每个方法进行介绍。CookieCookie 存储所有请求的数据。会话状态会话状态是在用户浏览 Web 应用时用来存储用户数据的 ASP.NET Core 方案。配置会话状态Microsoft.AspNetCore.Session 包提供中间件来管理会话状态。以下代码演示如何使用 IDistributedCache 的默认内存中实现设置内存中会话提供程序:public class Startup { public void Confi

2020-07-29 11:28:30 320

原创 11 .net core WebHost

WebHost通过如下代码生成WebHostpublic class Program { public static void Main (string[] args) { CreateWebHostBuilder (args).Build ().Run (); } public static IWebHostBuilder CreateWebHostBuilder (string[] args) => WebHost //

2020-07-29 11:25:32 513

原创 10 错误处理

开发人员异常页public void Configure (IApplicationBuilder app, IHostingEnvironment env) { env.EnvironmentName = EnvironmentName.Production; if (env.IsDevelopment ()) { // 使用开发异常页面 app.UseDeveloperExceptionPage (); } else

2020-07-27 12:15:51 271

原创 9 .net core 日志记录

如何记录日志注入日志记录器public class TodoController : Controller{ private readonly ILogger _logger; public TodoController( ILogger<TodoController> logger) { _todoRepository = todoRepository; _logger = logger; }然后在该记

2020-07-27 12:13:31 263

原创 8 .net core 配置

JSON 配置using System;using System.IO;public class Program {public static IConfiguration Configuration { get; set; } public static void Main (string[] args = null) { var builder = new ConfigurationBuilder () .SetBasePath (Direct

2020-07-27 12:06:59 294

原创 7 .net core 路由

路由功能负责将传入请求映射到路由处理程序URL 匹配URL 匹配过程1.请求将进入 RouterMiddleware2.路由中间件具有IRouter 列表3.路由中间件循环调用每个IRouter 的RouteAsync方法4.如果RouteAsync方法设置了RouteContext.Handler,那么匹配结束,往下执行,否则回到步骤35.路由中间件调用RouteContext.Handler添加路由到路由中间件路由提供 Route 类,作为 IRouter 的标准实现。 Route 的

2020-07-27 12:05:18 406

原创 6 .net core 静态文件

静态文件存储在项目的 Web 根目录中。 默认目录是 <content_root>/wwwroot,但可通过 UseWebRoot方法更改目录。提供 Web 根目录内的文件public void Configure(IApplicationBuilder app){ app.UseStaticFiles();}无参数使用<content_root>/wwwroot作为根目录基于Url路径的文件目录public void Configure (IApplicati

2020-07-27 12:01:23 827

原创 5 .net core 基于工厂的中间件激活

基于工厂的中间件需要继承IMiddleware接口,在请求到来时,会从IMiddlewareFactory中获取中间件实例如果中间件没有继承IMiddleware接口,则不会从IMiddlewareFactory中获取.netcore具有IMiddlewareFactory的默认实现IMiddleware使用基于工厂的中间件(继承IMiddleware接口):public class FactoryActivatedMiddleware : IMiddleware{ private re

2020-07-24 23:51:55 360

原创 4 .net core 中间件

什么是中间件(请求委托)?中间件是一种装配到应用程序管道以处理请求和响应的软件。 每个组件:选择是否将请求传递到管道中的下一个组件。可在调用管道中的下一个组件前后执行工作。使用 IApplicationBuilder 创建中间件管道ASP.NET Core 请求管道包含一系列相继调用的请求委托,如下图所示(执行过程遵循黑色箭头):每个委托均可在下一个委托前后执行操作。此外,委托还可以决定不将请求传递给下一个委托, next 参数表示管道中的下一个委托。public class Startu

2020-07-24 23:48:25 293

原创 3 .net core 依赖注入

Asp.net core的依赖注入:我们向IServiceCollection服务集合注册我们的类,然后在控制器的构造方法中直接以该类为参数,而不用手动实例依赖注入基本使用服务注册:public void ConfigureServices(IServiceCollection services){ services.AddScoped<IMyDependency, MyDependency>(); ...}使用(称为依赖注入)public class My

2020-07-24 23:43:31 283

原创 2 .net core 应用程序启动

Startup 类ASP.NET Core 应用使用 Startup 类作为启动类,按照约定命名为 Startup。当应用启动时,Startup的 ConfigureServices 和 Configure方法被运行public class Startup{ // Use this method to add services to the container. public void ConfigureServices(IServiceCollection services)

2020-07-24 23:40:51 342

原创 1 .net core 快速搭建MVC引用程序

安装环境Visual StudioVisual Studio 2017 15.7.3 版或更高版本.NET Core安装 .NET Core Runtime(运行 .net core 程序)和 .NET Core SDK (开发 .net core 程序).net core下载地址:https://dotnet.microsoft.com/download注:注意版本创建 Web 应用在Vs创建Asp.net core Web应用程序,选择创建MVC应用控制器添加控制器这里新建了一个M

2020-07-24 23:36:01 462

原创 4 CMake 搭配 MINGW

MINGW是window的c++编译器1.安装mingw-64下载:https://sourceforge.net/projects/mingw-w64/files/latest/download推荐默认路径安装(勾选 添加到环境变量,重启生效)2.安装CMake下载:https://cmake.org/files/推荐默认路径安装(勾选 添加到环境变量,重启生效)3.修改cmake在mingw下的工具在路径下C:\Program Files\mingw-w...

2020-07-24 12:36:03 328

转载 3 CMake 全局变量与编译

原文地址:https://blog.csdn.net/fan_hai_ping/article/details/42524205CMake常用变量UNIX 如果为真,表示为 UNIX-like 的系统,包括 AppleOS X 和 CygWinWIN32 如果为真,表示为 Windows 系统,包括 CygWinAPPLE 如果为真,表示为 Apple 系统CMAKE_SIZEOF_VOID_P 表示 void* 的大小(例如为 4 或者 8),可以使用其来判断当前构建为 32 ..

2020-07-24 12:33:32 2376

转载 2 CMake 语法与命令

原文地址:https://blog.csdn.net/fan_hai_ping/article/details/42524205基本语法注释的语法#字符开始到此行结束。CMake命令命令可以是一个内置命令(例如:project,add_executable等),也可以是一个用户定义的宏(macro)或者函数(function)数据类型CMake的基本数据类型是字符串,一组字符串在一起称为列表(list),例如:# 通过 set 命令构建一个 listVAR...

2020-07-24 12:31:02 283

转载 1 CMake 简明教程

原文地址:https://blog.csdn.net/whahu1989/article/details/82078563原作写的很详细,如需要可以阅读原文,感谢原作者,本篇文章做了一些改动一 安装CMake本文使用ubuntu18.04,安装cmake使用如下命令,sudo apt install cmake安装完成后,在终端下输入cmake -version查看cmake版本,这样cmake就安装好了。二 简单样例首先让我们从最简单的代码入手,先来体验下cmake是..

2020-07-24 12:26:17 278

原创 c++ Linux VSCode 环境搭建

GCC的安装# 安装gcc$ sudo apt-getinstall gcc安装插件在VSCode编写和调试程序是需要安装相关的插件才能进行的。在这里我们选择安装C/C++、C++ Intellisense、Code Runner和Include Autocomplete这四插件。Helloworld新建一个helloworld.cpp源文件配置智能感知Ctrl+Shift+P运行C/CPP: Edit configuration ...命令...

2020-07-24 11:46:31 334

原创 c++解读复杂的定义式

Thinking   in   C++   里  作者介绍了一个简单的方法来解读复杂的定义式,   称为right-left   guideline.   简单的说就是从中间的变量名开始,   按右-左-右-左…的顺序来读.   以这个题目为例:ch

2020-07-23 12:24:19 292

原创 19 c++ 特殊工具与技术

#include <iostream>#include <vector>#include <cstdlib>#include <functional>#include "./Programmer.h"using namespace std;void NewDeleteTest();void DynamicCastTest();void MemberPTest();int main(){ NewDeleteTest();

2020-07-23 12:23:28 219

原创 18 c++ 用于大型程序的工具

#include <iostream>#include <vector>#include <tuple>#include <bitset>#include <regex>#include <random>using namespace std;void exceptionTest();int main(){ exceptionTest(); cout << "enter key" &lt

2020-07-23 12:22:22 201

原创 17 c++ 标准库特殊设施

#include <iostream>#include <vector>#include <tuple>#include <bitset>#include <regex>#include <random>using namespace std;void TupleTest();void BitsetTest();void RegexTest();void Randomtest();void IOTest();

2020-07-23 12:19:08 210

原创 16 c++ 模板与泛型编程

#ifndef Color_H#define Color_H#include <string>#include <type_traits>#include <utility>class Color{private: std::string _value;public: Color(std::string value):_value(value){}; std::string getValue() const{ return _

2020-07-23 12:18:21 212

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除