ASP.NET Core

ASP.NET Core 中间件的几种实现方式

爷,独闯天下 提交于 2020-11-24 14:51:19
前言 ASP.NET Core 中 HTTP 管道使用中间件组合处理的方式, 换句人话来说, 对于写代码的人而言,一切皆中间件. 业务逻辑/数据访问/等等一切都需要以中间件的方式来呈现. 那么我们必须学会如何实现 自定义中间件 这里划重点,必考 这里我们介绍下中间件的几种实现方式... 匿名函数 通常 新建一个空的 ASP.NET Core Web Application ,项目名字无所谓啦 在启动类里可以看到这么一句: // Startup.cs // ... app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); // ... 这就是一个匿名函数实现的中间件,虽然内容比较少. 可以看到通过匿名函数实现的中间件是内嵌在启动类文件中的,因此通常也叫做 内联中间件 接下来,我们通过匿名函数来实现内联中间件,以便加深理解. 新建一个空的 ASP.NET Core Web Application 然后修改启动类代码如下: // Startup.cs using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using

HTTP Error 500.30

北城以北 提交于 2020-11-24 13:37:53
环境 windown 10 IIS 10 net core 2.2 vs2019 背景 在vs2019使用 net core 2.2 发布到IIS 10上(见 在 ASP.NET Core 中使用多个环境 ),正常是没有问题的。想着使用环境变量进行环境配置,在发布文件上加了一个节点信息: <EnvironmentName>Development</EnvironmentName> 就出现了问题: 不明所以,查了一番找到了官网 Azure App Service 和 IIS 上的 ASP.NET Core 疑难解答 哦,可能是共享框架版本不存在, stdout 日志即使改为 true 也没有日志文件产生,只能看看 事件查看器 : 这一串也是看不懂了: Application '/LM/W3SVC/2/ROOT' with physical root 'D:\06-IIS\netcore-sample\netcoe.S01.base\' failed to load clr and managed application. CLR worker thread exited prematurely Process Id: 10864. File Version: 12.2.19169.6. Description: IIS ASP.NET Core Module V2 Request

Swashbuckle.AspNetCore3.0的二次封装与使用

风格不统一 提交于 2020-11-24 06:25:36
关于 Swashbuckle.AspNetCore3.0 一个使用 ASP.NET Core 构建的 API 的 Swagger 工具。直接从您的路由,控制器和模型生成漂亮的 API 文档,包括用于探索和测试操作的 UI。 项目主页: https://github.com/domaindrivendev/Swashbuckle.AspNetCore 项目官方示例: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/tree/master/test/WebSites 之前写过一篇 Swashbuckle.AspNetCore-v1.10 的使用 ,现在 Swashbuckle.AspNetCore 已经升级到 3.0 了,正好开新坑(博客重构)重新封装了下,将所有相关的一些东西抽取到单独的类库中,尽可能的避免和项目耦合,使其能够在其他项目也能够快速使用。 运行示例 封装代码 待博客重构完成再将完整代码开源,参考下面步骤可自行封装 1. 新建类库并添加引用 我引用的版本如下 <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.1.1" /> <PackageReference Include="Microsoft

asp.net core react 项目实战(一)

牧云@^-^@ 提交于 2020-11-23 10:00:23
asp.net-core-react asp.net core react 简介 开发依赖环境 .NET Core SDK (reflecting any global.json): Version: 2.2.300 Runtime Environment: OS Name: Mac OS X Host (useful for support): Version: 2.2.5 node -v v10.16.0 开发语言 asp.net core react 开发工具 vscode 开发流程 创建sln项目解决方案「sln 不是必须创建 但是创建了对智能提示友好」 dotnet new sln 组织项目 为了时髦一些我在和sln并列层级目录里床架了一个src文件夹 以此来管理源代码 mkdir src 进入src 目录创建一个react web应用 取名为web cd src dotnet new react -o web 回到项目根目录 将新添加的 web项目 添加到sln 项目解决文件中 dotnet sln add src/web/web.csproj 「这个一定要➕加」 我们当前目录结构是这样的 . ├── LICENSE ├── README.md ├── asp.net-core-react.sln └── src └── web ├── ClientApp ├──

asp.net core 3.x Identity

走远了吗. 提交于 2020-11-20 07:26:39
一、前言 这方面的资料很多,重复的写没必要,但是最近一直在学习身份验证和授权相关东东,为了成体系还是写一篇,主要是从概念上理解identity系统。 参考: https://www.cnblogs.com/r01cn/p/5179506.html 二、概述 几乎所有系统都包含用户、角色、权限、登录、注册等等,以前我们通常是自己来实现,定义各种实体、以及对应的Repository、Service类,其实这些功能早在.net 2.0就已有实现,并且一直在进化,要么是因为大家不了解,要么是因为觉得扩展性不强,最终使用微软提供的用户管理的人不多,这里就不扯以前的事了。现在的asp.net core延续了.net framework最后一次实现的Identity,暂且称为“标识系统”吧。我的理解是它主要 提供用户管理、角色管理等功能,并且提供了相关的类与身份验证系统结合,还包括持久化和UI,还提供了很多扩展点 ,当然预留了很多扩展点,也提供了默认实现,就使用起来。用还是不用了解之后再做决定也不迟。 身份验证、授权、用户/角色管理这三个系统是独立的,只是授权依赖身份验证,你要判断某人能干啥,至少得让他先登录吧。所以identity系统不是必须的,但是用它比自己实现更方便。另一个原因一些开源框架对于用户、角色、权限、登录这些东西往往也是直接使用的微软原生的,只是做了些许扩展和集成。 主要概念包括

初探ASP.NET Core 3.x (2)

半世苍凉 提交于 2020-11-20 07:22:00
本文地址: https://www.cnblogs.com/oberon-zjt0806/p/12210662.html 注意 本节是 历史课 ,且绝大多数内容来自于百科或者其他的什么资料来源,如果不感兴趣可略过 反正这玩意怎么发展的也不影响你今天的使用不是?? 目录 I 从ASP.NET到ASP.NET Core I.1 各自的优点 I.2 应用场合 II 我们用哪个?? II.1 但ASP.NET就不用管了么?? II.2 作为新的替代品,ASP.NET Core有应用么?? II.3 这两个在技术上有什么变化 <!-- tocstop --> I 从ASP.NET到ASP.NET Core ASP.NET是一个免费的,成熟的web框架, 用于使用HTML、CSS和JavaScript构建强大的网站和Web 应用程序。 还可以创建Web Api并使用Web套接字等实时技术。ASP.NET目前是随着.NET Framework更新的,目前的版本为ASP.NET 4.x。 ASP.NET Core是 ASP.NET 的一种崭新的替代方法。 I.1 各自的优点 ASP.NET的出现较早,经过了较长的开发迭代,因此ASP.NET的技术相对上比较成熟并趋于稳定。因为是一个相对而言比较传统的一个框架,因此具备更好的 前向兼容性 ,对于一些早期构建的一些应用程序和接口可以更好的兼容和复用

EIP Core2.0开源

百般思念 提交于 2020-11-19 05:16:49
EIP Core2 权限管理系统 (交流群:495070603,作者:1039318332) 开源地址: https://gitee.com/sunzewei/eipcore2 https://github.com/woshisunzewei/eipcore2 数据库代码都在里面。下之前先请star一下哦亲! 一、源码介绍(注意此版本基于2.0开发) 1、开发工具:Vs2017+SqlServer 2008R2 及以上版本 2、系统采用前后端分离模式开发,后端使用最新的Core2框架,使用MongoDb作为缓存工具,前端使用Adminlte框架进行二次开发,可自由换肤,自己进行扩展 2、系统设计为通用平台框架,权限模块已成熟,可用作ERP、OA、CRM等系统的基础开发框架,具有成熟的数据访问(Dapper)、作业调度(Quartz.net)、日志记录、权限控制等解决方案。 3、系统采用多层架构,简单实用,内置T4代码生成器,可快速生成业务代码。 二、特色功能 1、完善的架构: 1.1、系统前端采用Asp.net Core2 Mvc区域模式进行开发,将需要开发的子系统使用区域分割,使各个模块进行完美的分割,对以后系统升级等提供可扩展性 1.2、系统前端基于Adminlte框架,使用了各种成熟的Jquery插件,为系统界面的友好交互性提供了保障。 1.3、系统采用前后端分离模式开发

.NET移植到.NET Core

╄→尐↘猪︶ㄣ 提交于 2020-11-17 07:16:05
本月初,Microsoft 宣布了.NET Core 3.0的.NET Framework API移植项目的结论 。 这意味着官方开发团队不会将任何其他API从.NET Framework移植到.NET Core 3.0(及以后的版本)。 但是,在同一公告中,Microsoft还声明了他们打算开放更多.NET Framework代码的源代码,这可能允许将来创建由社区驱动的移植项目。 Microsoft .NET的程序经理Immo Landwerth解释说,该决定与Microsoft .NET Core的计划一致: 我们宣布,.NET的未来将基于.NET Core。 使用.NET Core 3.0,我们可以轻松移植现代工作负载所需的所有技术,无论是台式机应用程序,移动应用程序,控制台应用程序,网站还是云服务。 这并不是说我们在新技术方面没有任何差距或机会,但我们通常认为我们不会再在.NET Framework代码库中找到它们。 展望未来,我们将资源集中在整合新技术上。 根据Immo的说法,自1.0版以来,超过一半的.NET Framework API(约120k)已移植到.NET Core。 此外,.NET Core中有62k个新API,但.NET Framework中不存在。 根据API的总数进行比较时,.NET Core约占.NET Framework API表面积的80%。

asp.net core web mvc之异常

纵然是瞬间 提交于 2020-11-17 03:55:03
与web api类似,asp.net core web mvc模板也是利用ExceptionHandler来处理错误,在starup的Configure配置数据发生时导向的/home/error public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } //处理404数据的显示信息 app.UseStatusCodePages(async context => { context.HttpContext.Response.ContentType = "text/plain"; await context.HttpContext.Response.WriteAsync($"找不到资源,状态码: {context.HttpContext.Response.StatusCode}"); }); //…… } 异常业务类定义如下 using System; namespace WebError { /// <summary> /// 产品异常 /// <

Asp.Net Core获取请求上下文HttpContext

倖福魔咒の 提交于 2020-11-16 00:14:07
注:特别说明当前版本对应.Net Core2.1意义上框架 一、注入HttpContextAccessor ASP.NET Core中提供了一个 IHttpContextAccessor接口,HttpContextAccessor 默认实现了它简化了访问HttpContext。 它必须在程序启动时在IServicesCollection中注册,这样在程序中就能获取到HttpContextAccessor,并用来访问HttpContext。 services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); 二、获取HttpContextAccessor 下面来实际做一个操作,获取 HttpContextAccessor。 新建一个ASP.NET Core Web 应用程序,选择Web 应用程序。 身份验证勾选为不进行身份验证。 然后在HomeController 加入如下代码: public class HomeController : Controller { private IHttpContextAccessor _accessor; public HomeController(IHttpContextAccessor accessor) { _accessor = accessor; } public