ASP.NET Core

ASP.NET Core MVC四种枚举绑定方式

我们两清 提交于 2020-08-11 12:32:22
前言 本节我们来讲讲在ASP.NET Core MVC又为我们提供了哪些方便,之前我们探讨过在ASP.NET MVC中下拉框绑定方式,这节我们来再来重点看看枚举绑定的方式,充分实现你所能想到的场景,满满的干货,你值得拥有。 探讨枚举绑定方式 我们首先给出要绑定的枚举类。 public enum Language { JavaScript, Java, C, Python, SQL, Oracle } 枚举绑定方式一(@Html.DropDownList) 接下来我们废话少说直接进入主题。 ViewBag.enums = Enum.GetValues( typeof (Language)).Cast<Language>(); 视图页面则是得到该ViewBag中的值。 @Html.DropDownList( " enumList " , new SelectList(ViewBag.enums), new { @class = " btn btn-success dropdown-toggle form-control " }) 绑定方式二(@Html.EnumDropDownListFor) 此时我们需要借助强类型视图来操作,如下控制器代码 [HttpGet] public IActionResult Get() { var test = new TestViewModel();

走向统一的 .NET 旅程

可紊 提交于 2020-08-11 10:27:42
这是微软第一次完全线上举办的Build大会,也是第一次完全属于开发者的大会。几乎所有的新产品都是属于开发者,开发者成为了唯一的主角。 现在的微软比以往任何时候都贴近开发者,重视开发者的作用,为他们打造平台和工具。因为没有开发者,就没有微软的生态平台,也就没有微软的一切, 今年的Build大会究竟都宣布了很多新产品,自然也少不了.NET, 两个Scott 在 统一 .NET 平台的旅程 视频里揭晓.NET 的发展现状和未来。 发布了.NET 5 Preview4 , Blazor WebAssembly RTM, ML.NET Model Builder、云原生应用开发的tye 以及 docker 改进等。在dotnet团队的官方博客上连续发了好几篇篇文章: Announcing .NET 5 Preview 4 and our journey to one .NET Introducing .NET Multi-platform App UI Windows Forms Designer for .NET Core Released ML.NET Model Builder is now a part of Visual Studio Announcing Entity Framework Core 5.0 Preview 4 ASP.NET Core updates in

ASP.NET Core3.1使用Identity Server4建立Authorization Server-2

↘锁芯ラ 提交于 2020-08-11 09:44:18
前言 建立Web Api项目 在同一个解决方案下建立一个Web Api项目 IdentityServer4.WebApi ,然后修改Web Api的launchSettings.json。参考第一节,当然可以不修改的,端口号为 5001 。 { "profiles": { "IdentityServer4.WebApi": { "commandName": "Project", "launchBrowser": true, "launchUrl": "weatherforecast", "applicationUrl": "http://localhost:5001", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } } 添加Swagger帮助页面 官方文档: https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs=visual-studio&view=aspnetcore-3.1 在 Startup.ConfigureServices 方法中将Swagger生成器添加到服务集合: public void ConfigureServices

浅谈.Net Core DependencyInjection源码探究

冷暖自知 提交于 2020-08-11 09:40:36
前言 相信使用过Asp.Net Core开发框架的人对自带的DI框架已经相当熟悉了,很多刚开始接触.Net Core的时候觉得不适应,主要就是因为Core默认集成它的原因。它是Asp.Net Core基础核心框架之一,对于Asp.Net Core来说DI就灵魂,已经深入到这框架的骨髓里了。对于IOC和DI,可能每个人都能说出自己的理解。IOC全称是Inversion of Control翻译成中文叫控制反转,简单的说就是把对象的控制权反转到IOC容器中,由IOC管理其生命周期。DI全称是DependencyInjection翻译成中文叫依赖注入,就是IOC容器把你依赖的模块通过注入的方式提供给你,而不是你自己主动去获取,其形式主要分为构造注入和属性注入,Core自带的DI只支持构造注入,至于为什么,最多的说法就是构造注入能使得依赖变得更清晰,我既然依赖你,那么我实例化的时候你就必须得出现。而构造函数恰恰就承担着这种责任。 简单介绍 很多人接触它的时候应该都是从Asp.Net Core学习过程中开始的。其实它本身对Asp.Net Core并无依赖关系,Asp.Net Core依赖DI,但是这套框架本身并不只是可以提供给Asp.Net Core使用,它是一套独立的框架,开源在微软官方Github的extensions仓库中具体地址是 https://github.com/dotnet

ASP.NET Core中使用Autofac进行属性注入

点点圈 提交于 2020-08-11 08:48:54
原文: ASP.NET Core中使用Autofac进行属性注入 一些无关紧要的废话:   作为一名双修程序员(自封的),喜欢那种使用Spring的注解形式进行依赖注入或者Unity的特性形式进行依赖注入,当然,形式大同小异,但结果都是一样的,通过属性进行依赖注入。   ASP.NET Core中使用了自带的Dependency Injection作为了默认的IOC容器,当然有先天的优势,很多还是喜欢切换到Autofac作为IOC容器,Unity在.Net Core中还是有很大的优势的,但据我所知,Unity5已经由微软转交到基金会了,而且本身文档很少,翻译文档以及研究的就更加少了。   当然,说了一堆废话,Autofac本身也是支持属性注入的,但是很多还是使用构造器进行注入,我本身也是推荐使用构造器进行注入(其实我不是这么想的),因为使用属性进行注入,将会暴露当前类的属性(Autofac属性注入属性必须为public),Spring可以用private进行注入的,但是不知道为什么,Autofac我使用private的时候注入进来的时候是null,如果文章有错误的话,希望高手能在留言处指出,帮助我及更多人进步。谢谢。 ⒈新建一个ASP.NET Core MVC程序。 ⒉添加 NuGet 包 Install- Package Autofac Install -Package

ASP.NET Core 服务使用IIS托管注册Consul时的坑

帅比萌擦擦* 提交于 2020-08-11 08:46:20
大家习惯将服务注册写进Startup中的Configure管道配置,用来在服务启动时进行Consul服务注册,如图: 然后由于某些原因,我更适合将服务部署在IIS,部署好之后,点击启动网站,却发现服务并没有注册进Consul,然后我就查其原因: 使用 IIS 在 Windows 上托管 ASP.NET Core Windows 进程激活服务 (WAS) 也就是说,使用IIS托管时,不管是进程内外托管,都会有这个问题,第一个请求时,应用才会运行起来,我用Exceptionless做了实测(进程外托管程序是dotnet),验证后无疑。 解决方案:1. 不管是进程内托管还是进程外托管的方式, 不使用IIS托管需要注册的服务。      2.服务部署在IIS后,手动点击浏览一下网站或其他发请求的方式,来发送第一个请求。 来源: oschina 链接: https://my.oschina.net/u/4260256/blog/4277467

ASP.Net Core Web Api 使用 IdentityServer4 最新版 踩坑记录

故事扮演 提交于 2020-08-11 07:53:02
辅助工具 日志追踪包 : Serilog.AspNetCore 源码查看工具 : ILSpy 项目环境 ###: ASP.NetCore 3.1 IdentityServer4 4.0.0+ 主题内容 测试登录方式 : password 错误内容: connect/token 登陆出错 但百度/google网上的示例没有找到正确的调用方式,无奈只能自己动手,丰衣足食... 首先,先按照之前版本进行传参 POST请求 url: connect/token 参数传递通过 form-data 调用结果: <调用结果> HTTP : 400 { "error": "invalid_request" } 查找调用日志 Invoking IdentityServer endpoint: IdentityServer4.Endpoints.TokenEndpoint for /connect/token 可以看到地址匹配是成功的,那就是校验不通过了,接着看一下这个类的源码,找到错误触发地 public async Task<IEndpointResult> ProcessAsync(HttpContext context) { if (!HttpMethods.IsPost(context.Request.Method) || !context.Request

C#跨平台开源项目实战(WPF/Android/IOS/Blazor)

末鹿安然 提交于 2020-08-11 07:47:05
个人介绍 由于本人从业WPF开发, 考虑到国内的WPF开发环境并不是很好, 资源少、项目案例少, 所以导致很多初学者就已经断了念头。 所以我作为WPF的从业者, 就在2019年,开始了发布自己的WPF相关的免费教学视频。发布开源的项目实践, WPF的基础视频、项目实践视频, 包括WPF UI设计视频。 同时我希望通过不断的网络传播, 博客园, 码云/Github发布资源, 可以让提供面向中国的WPF相关从业者, 提供一个参考、学习、以及灵感和创意。 项目起源 由于做的都是WPF相关工作,对XAML语言也是比较熟悉, 所以扩展了Xamarin移动端教程, 使得C#开发 安卓和IOS变成了可能, 包括目前C#使用Blazor来开发网页端, 所以发起了这个开源项目。 项目说明 该项目主要由一套C#代码, 构建多个平台的项目, 包括: Windows、Android、IOS、Web。后端采用Asp.net Core WebApi。 该项目主要应用于日常的一套记账应用为基础开发, 提供给用户在手机端操作一些账单信息, PC/Web端主要用于后台管理, 用于统计相关数据, 报表等功能, 该项目提供了基础的用户管理、部分管理、围绕展开的权限管理。 关于视频 关于所有的C#、WPF、Xamarin、Blazor等教学视频, 都在国内的各个视频平台公开: 今日头条, 西瓜视频, 抖音,

造轮子-AgileConfig基于.NetCore的一个轻量级配置中心

▼魔方 西西 提交于 2020-08-11 07:46:37
微服务确实是行业的一个趋势,我自己也在把一些项目往微服务架构迁移。玩微服务架构配置中心是一个绕不过去的东西,有很多大牌的可以选,比如spring-cloud-config,apoll,disconf等等。而我为什么还要造一个轮子呢?一来这些都不是.net实现的,我就想试试用.net core实现一个,而且他们也对.net不太友好,也只有apoll提供了官方的.net客户端。二来这些组件都太重量级了,比如apoll,光跑起来就要部署多个节点(admin,portal,meta sevice)还要依赖eureka。很多旧的项目往微服务迁移的时候并不是一下次全部调整完成的,可能是一步步来的,比如先把所有的服务都容器化,并没有使用微服务全家桶。而且有的项目也不需要微服务全家桶,毕竟微服务不是银弹,很多项目单体结构就足够了,有些项目传统的SOA架构也可以了。(唠叨一句,那种毫无流量毫无并发的项目,几人几天就搞完的强上微服务真的好吗?)但是这些项目也可能是分布式的,容器化部署的,那么这些项目我觉得也是需要配置中心的,因为在分布式、容器化环境下更改配置实在是太麻烦了。可以说配置中心并不是微服务独有的。基于以上原因我提炼了一些配置中心必备的功能,做的尽量简单(陋),开发了AgileConfig,为.net core的生态尽一份绵薄之力。 Github求star: AgileConfig

asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权

醉酒当歌 提交于 2020-08-11 02:08:56
开发了一个公司内部系统,使用asp.net core 3.1。在开发用户认证授权使用的是简单的cookie认证方式,然后开发好了要写几个接口给其它系统调用数据。并且只是几个简单的接口不准备再重新部署一个站点,所以就直接在MVC的项目里面加了一个API区域用来写接口。这时候因为是接口所以就不能用cookie方式进行认证,得加一个jwt认证,采用多种身份验证方案来进行认证授权。 认证授权 身份验证是确定用户身份的过程。 授权是确定用户是否有权访问资源的过程。 在 ASP.NET Core 中,身份验证由 IAuthenticationService 负责,而它供身份验证中间件使用。 身份验证服务会使用已注册的身份验证处理程序来完成与身份验证相关的操作。 认证-->授权 关于认证授权我们要区分认证和授权是两个概念,具体可查看MSDN官方文档也可以搜索其它文章看看,讲的很多。其中包括OAuth 2.0 以及jwt的相关知识都有很多资料并且讲解的很好。 身份认证 身份验证方案由 Startup.ConfigureServices 中的注册身份验证服务指定: 方式是在调用 services.AddAuthentication 后调用方案特定的扩展方法(例如 AddJwtBearer 或 AddCookie)。 这些扩展方法使用 AuthenticationBuilder.AddScheme