【268网校源码】【jenkins源码没有git】【wemall 小程序源码】asp.net源码github

时间:2024-11-13 15:43:34 来源:小农场游戏源码 分类:综合

1.ASP.NET Core配置系列五
2.如何在 Asp.Net Core 实现 Excel 导出功能
3.C#/.NET/.NET Core优秀项目框架推荐
4..NET反向代理组件YARP的源码简单使用
5.请推荐学.net方面的教程或书籍
6.分享一个基于.NET Core 3.1开发的模块化项目

asp.net源码github

ASP.NET Core配置系列五

       在开发ASP.NET Core应用程序时,异常处理是源码至关重要的。本文将详细阐述如何在开发环境中添加异常处理中间件以及在不同环境下的源码异常处理策略。

       首先,源码我们需要确保在运行应用程序时能捕获并处理异常。源码在浏览器输入指定URL时,源码268网校源码若遇到异常,源码通常只会得到无响应的源码状态提示。为了获取更友好的源码异常消息,如资源不存在、源码无访问权限、源码资源不可用等,源码我们应当启用异常处理功能。源码

       在ASP.NET Core中,源码通常在Program类中添加ExceptionHandler中间件,源码并使用`UseDeveloperExceptionPage`方法生成HTML错误信息。对于特定的响应状态码错误,我们可以使用`app.UseStatusCodePages()`中间件进行处理。在`Program.cs`类中添加相关代码,并在运行前注释掉`ResponseEditingMiddleware`中间件。

       重新运行应用程序,并输入指定URL,将能够看到详细的错误页面,例如,当资源不存在引发异常时,页面将显示异常原因。如果在action方法中代码发生异常,如NullReferenceException,通过访问特定URL,能获得更详细的异常信息和堆栈跟踪。

       在不同的开发环境(如生产环境和开发环境)中,异常处理策略也有所不同。在生产环境中,我们可以添加一个action方法,当错误发生时调用它。在开发环境中,为了提供更详细的jenkins源码没有git错误信息,我们可以创建错误视图。通过在`Program.cs`类中配置`UseExceptionHandler`中间件,并指定错误路径,如`/Home/Error`,可以在错误发生时调转到该action。

       对于appsettings.json文件的配置,它存储了数据库链接、全局变量以及其他ASP.NET Core应用程序的配置信息。文件位于项目根目录下,包含了键值对,如`Key1: Microsoft`、`Key2: DotNet`等。在项目文件中创建`appsettings.json`文件,并根据需要添加配置节点,如中间件的启用状态。在`Program.cs`类中使用`app.Configuration()`方法读取配置文件,并根据配置注册相应的中间件。

       在Controller和View中访问appsettings.json,可以通过注入`IConfiguration`实现。在大型项目中,为避免直接访问过多的实体类,可从`appsettings.json`中提取所需的节点并转化为实体类,通过实体类访问配置文件中的键值对。为实现这一过程,首先创建包含节点的类,然后在`Program.cs`中使用`Configure`注册该类,之后在控制器中使用`IOptions`获取该类。

       在View中注入`IOptions`,允许在视图中使用配置文件中存储的值。通过`@settings.Value.PropertyName`可以访问属性。对于不同的开发和生产环境,可以创建两个不同的`appsettings`文件,如`appsettings.Production.json`和`appsettings.Development.json`。框架会根据当前环境自动选择相应的配置文件,从而实现环境间的配置隔离。

       综上所述,wemall 小程序源码本文涵盖了ASP.NET Core配置系列的各个方面,从文件结构到中间件使用,再到环境间的配置差异,提供了全面的异常处理策略和配置管理方案。为了深入学习和实践,请参考源代码地址:github.com/bingbing-gui...,并加入技术群获取更多学习资源。

如何在 Asp.Net Core 实现 Excel 导出功能

       在Web应用开发中,实现Excel导入导出功能是一个常见的需求。本文将讨论如何在Asp.Net Core中使用ClosedXML库实现Excel数据导出。

       首先,需要在项目中安装ClosedXML。可以通过NuGet包管理器或命令行完成安装,命令如下:

       为了将数据导出成CSV文件,可以使用CsvExport或AWright.SimpleCSVExporter库。下面定义一个Author类,用于存储数据。

       接着,塞入数据到authors列表中,然后编写一个DownloadCommaSeperatedFile方法,将CSV导出功能集成到Controller的Action中。

       为了实现Excel数据导出,生成workbook和worksheet。在worksheet中添加数据,然后将workbook转换为内存流,通过Controller的FileContentResult返回给客户端。

       最后,将所有业务逻辑集成到一个Action中,实现Excel数据导出功能。对于更复杂的Excel数据操作,可以考虑使用EPPlus或NPOI。

       关于ClosedXML的更多信息,可以参考其GitHub仓库:github.com/ClosedXML/Cl...。更多信息和高质量内容,可访问我的GitHub:dotnetfly。

C#/.NET/.NET Core优秀项目框架推荐

       为.NET开源者提供一个推荐自己优秀框架的易语言校验源码地址,大家可以把自己的一些优秀的框架,或者项目链接地址存到在这里,提供给广大.NET开发者们学习(排名不分先后)。

       Github项目仓库收集地址: github.com/YSGStudyHard...

       填写格式如下:

       项目or框架名称+访问链接地址+项目描述: NPOI-ExportWordAndExcel-ImportExcelData 一个简单,易懂的通用 ASP.NET Core NPOI导出复杂Word、复杂美观Excel和Excel数据导入详细示例开源项目(开箱即用,无需其他繁琐配置)。 C#/.NET Core/.NET项目宝库(收集了大量优秀的C#、.NET、.NET Core项目) 该库主要是为我们.NET开发者提供一个寻找优秀C#/.NET Core/.NET项目的入口,通过了解和对比更多的项目来选择最适合我们自己学习、工作开发的一套项目。优秀的项目是不应该被埋没的,欢迎大家一起加入这个组织共同完善、发展.NET社区!注意:这些都是非常优秀的作者所写的项目,排名不分先后,欢迎前往原址Star

       Blog.Core

       项目地址: github.com/anjoy8/Blog....

       Blog.Core一个开箱即用的企业级前后端分离 .NET Core6.0 Api + Vue 2.x + RBAC权限框架。 官方文档地址: apk.neters.club/.doc

       AspNetCore

       项目地址: github.com/dotnet/aspne...

       ASP.NETCore是一个跨平台的.NET框架,用于在Windows、Mac或Linux上构建基于云的现代web应用程序。

       WeiXinMPSDK

       项目地址: github.com/JeffreySu/We...

       微信公众平台SDK Senparc.Weixin for C#,支持.NET Framework及.NET Core。已支持微信公众号、小程序、小游戏、企业号、企业微信、开放平台、微信支付、JSSDK、微信周边等全平台。 WeChat SDK for C#.

       ABP Framework

       项目地址: github.com/abpframework...

       ABP是一个开源应用程序框架,专注于基于 ASP.NET Core的Web应用程序开发,但也支持开发其他类型的应用程序. 官方文档地址: documentation

       Util

       项目地址: github.com/dotnetcore/U...

       Util是一个.net core平台下的应用框架,旨在提升小型团队的开发输出能力,由常用公共操作类(工具类)、分层架构基类、会员分销源码下载Ui组件,第三方组件封装,第三方业务接口封装,配套代码生成模板,权限等组成。

       ...

       FreeRedis

       项目地址: github.com//Free...

       FreeRedis 是 .NET+ Redis 客户端。支持集群、哨兵、主从、发布-订阅、lua、管道、事务、流、客户端缓存和池化。

       FreeSql

       项目地址: github.com/dotnetcore/F...

       FreeSql 是一款功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+ 以及 Xamarin。

       SqlSugar

       项目地址: github.com/donet5/SqlSu...

       SqlSugar是一款 老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新 ,

       1. .NET中唯一支持全自动分表组件,SAAS分库,大数据处理的ORM 2. .NET 百万级写入、更新 性能最强框架 3. 使用最简单的ORM 文档,视频教程 4. 媲美原生的极限的性能 5.Github star数仅次于EF 和 Dapper,每月nuget下载量超过1万 更多优点: 简单易用、功能齐全、高性能、轻量级、服务齐全、官网教程文档、有专业技术支持一天小时服务 支持数据库:MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、人大金仓、神通数据库

       ...

       Autofac

       项目地址: github.com/autofac/Auto...

       Autofac 是.NET框架中最常用的依赖注入框架之一。相比.Net Core标准的依赖注入库, 它提供了更多高级特性, 比如动态代理和属性注入等。

       Mapster

       项目地址: github.com/MapsterMappe...

       一款高性能对象映射框架。

       AutoMapper

       项目地址: github.com/AutoMapper/A...

       一款功能强大的对象映射框架(在 .NET 领域的开发者中有非常高的知名度和使用率)。

       AspNetCoreRateLimit

       项目地址: github.com/stefanprodan...

       ASP.NET Core 限速中间件。

       Polly

       项目地址: github.com/App-vNext/Po...

       Polly 是一个 .NET 弹性和瞬态故障处理库,允许开发人员以流畅和线程安全的方式表达重试、断路器、超时、隔板隔离和回退等策略。从 6.0.1 版开始,Polly 面向 .NET Standard 1.1 和 2.0+。

.NET反向代理组件YARP的简单使用

       YARP,即Yet Another Reverse Proxy,是一个轻量级的.NET反向代理组件。它支持HTTP和HTTPS协议,能将请求转发到其他服务器。YARP的开源地址为github.com/microsoft/re...,适用于负载均衡、内部网络隔离、隐藏内部服务器IP地址等用途。转发请求时,YARP可以添加或修改HTTP头。

       反向代理(Reverse Proxy)是一种网络服务器,它作为客户端和服务器之间的中介,帮助客户端访问服务器。当客户端发起请求时,反向代理会接收请求并转发到后端服务器。这样,客户端可访问内部服务器,而不会直接暴露内部服务器的IP地址。反向代理还用于加载平衡、缓存、保护服务器免受DDoS攻击等,添加或修改HTTP头以提升客户端服务。

       使用YARP,首先新建ASP.NET Core项目,手动或命令模式添加Yarp.ReverseProxy包。在Program.cs文件中注册Yarp,随后配置appsettings.json添加Yarp配置项。配置完成后,站点将随机反向代理到指定的服务器。具体操作如下:新建ASP.NET Core项目,添加Yarp.ReverseProxy包,注册Yarp,配置appsettings.json,即可完成YARP的使用。

       总结,本文简要介绍了.NET反向代理组件YARP和反向代理的概念,并通过示例演示了YARP的简单使用。希望本文能为读者提供有价值的信息,欢迎留言和点赞。

       版权说明:本文来源于网络收集或网友供稿,仅供学习交流,如有侵权,请告知或留言,本平台将立即删除。

请推荐学.net方面的教程或书籍

       推荐一本学习.NET方面的书籍,《OReilly.Head.First.C.Sharp》。OReilly出版社的书籍因其专业性和全面性而备受推崇。您可以在官方网站上找到这本书的电子版。在搜索栏输入"Head First"系列,即可找到相关资源。

       《OReilly.Head.First.C.Sharp》这本书以轻松幽默的方式,深入浅出地讲解了C#语言的基础知识。它涵盖了从变量、数据类型、控制结构到面向对象编程、异常处理、泛型等多个方面,对于初学者和有一定经验的开发者都非常适合。通过实例驱动的学习方法,帮助读者快速掌握编程技巧。

       此外,您还可以在线上教育平台如Coursera、Udemy或Codecademy寻找.NET编程课程。这些平台提供了丰富的编程课程,包括.NET Core、ASP.NET MVC、WPF等,覆盖了.NET开发的多个方面。课程通常以视频讲解、实践项目和编程挑战相结合的方式,帮助学员系统地学习和掌握.NET技术。

       对于希望进一步深入学习.NET框架和相关技术的人来说,可以关注微软官方文档和社区。微软的官方文档提供了详细的API参考、教程和示例代码,是学习.NET的最佳资源之一。同时,参与微软技术社区(如Tech Community)或GitHub上的开源项目,可以结识更多.NET开发者,交流经验,共同进步。

       总之,在学习.NET方面,可以选择经典书籍《OReilly.Head.First.C.Sharp》作为入门指南。同时,结合在线课程、官方文档和社区资源,可以更全面地掌握.NET技术,提升编程技能。

分享一个基于.NET Core 3.1开发的模块化项目

       分享一个基于.NET Core 3.1开发的模块化项目,整个项目包括Asp.Net Core 3.1.2与MSSQL(LINUX版)。项目涉及中间件如Redis与RabbitMQ,并采用完全模块化设计,支持每个模块拥有独立的静态资源文件。开源地址:github.com/yupingyong/m...

       项目结构包含以下几个关键部分:Mango.WebHost承载整个项目运行,Mango.Framework封装项目模块化核心。重点在于实现模块化设计的核心要点,后续博文中将详细讨论。

       核心问题在于框架如何加载自定义模块。Asp.Net Core MVC提供部件管理类支持从外部DLL程序集加载组件,并通过ApplicationPartFactory获取组件信息。同时,需加载视图文件,使用ApplicationPartManager实现。加载程序集时,采用自定义的ModuleAssemblyLoadContext类,确保文件加载及管理的灵活性。

       针对每个模块独立静态资源文件的需求,MVC框架提供UseStaticFiles方法,通过配置FileProvider与RequestPath属性实现文件访问路径的自定义。

       本文主要介绍了模块化开发的核心代码展示与说明,具体实现细节将在后续博文中详细阐述。分享了一个前后分离的鉴权实现项目,开源地址:github.com/yupingyong/m...

       该项目已在Linux环境中使用docker容器部署,具体地址不再公开发布。接下来,框架将向DDD(领域驱动设计)发展。通过分享自己的知识成果,旨在与社区交流,提升编码风格与技术层次。

有哪些好的C#开源项目推荐?

       经过一些资料的收集,发现一些比较好的项目。

       ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当不支持时SignalR将使用其它技术来保证达到相同效果。SignalR 将与客户端进行实时通信带给了ASP .NET 。当然这样既好用,而且也有足够的扩展性。以前用户需要刷新页面或使用Ajax轮询才能实现的实时显示数据,现在只要使用SignalR,就可以简单实现了。

       github地址: /SignalR/SignalR

       SparkleShare是一个共享开源代码的工具,它设计的目标就是让共享代码变得更加简单而不是你先前习惯的样子。它允许你实时的同步Git库,对于Linux、Mac和Windows都是是可用的。

       github地址: /hbons/SparkleShare

       第三方的跨平台的.NET运行环境,在微软的.net框架还只支持WIN平台的时候,mono就已经开始支持Unix,Windows, MacOS甚至IOS,安卓等操作系统了。

       dapper-dot-net是一个超轻量型的ORM开源框架,对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/Rmapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。dapper超级轻小,简便,运行速度很快。赢得了很多开发者的喜欢(推荐大家看看)。

       github地址: /StackExchange/dapper-dot-ne

       Opserver是闻名遐迩的网站Stack Overflow的开源监控解决方案,由Stack Exchange发布。它基于.NET框架构建,这在监控工具领域有些与众不同。 旨在为每个受监控系统的健康状况提供一个快速的总体视图,还允许用户使用下钻方法进行深入挖掘。

       github地址: /StackExchange/dapper-dot-ne

       以上排行榜仅代码该项目在github上的关注度,并不代表这些项目的实际流行度与欢迎度。统计以github的start数量为标准。

ASP.NET Core认证原理和实现

       é€šå¸¸åœ¨åº”用程序中,安全分为前后两个步骤:验证和授权。验证负责检查当前请求者的身份,而授权则根据上一步得到的身份决定当前请求者是否能够访问期望的资源。

        既然安全从验证开始,我们也就从验证开始介绍安全。

        我们先从比较简单的场景开始考虑,例如在 Web API 开发中,需要验证请求方是否提供了安全令牌,安全令牌是否有效。如果无效,那么 API 端应该拒绝提供服务。在命名空间 Microsoft.AspNetCore.Authentication 下,定义关于验证的核心接口。对应的程序集是 Microsoft.AspNetCore.Authentication.Abstractions.dll。

        在 ASP.NET 下,验证中包含 3 个基本操作:

        验证操作负责基于当前请求的上下文,使用来自请求中的信息,例如请求头、Cookie 等等来构造用户标识。构建的结果是一个 AuthenticateResult 对象,它指示了验证是否成功,如果成功的话,用户标识将可以在验证票据中找到。

        常见的验证包括:

        在授权管理阶段,如果用户没有得到验证,但所期望访问的资源要求必须得到验证的时候,授权服务会发出质询。例如,当匿名用户访问受限资源的时候,或者当用户点击登录链接的时候。授权服务会通过质询来相应用户。

        例如

        质询操作应该让用户知道应该使用何种验证机制来访问请求的资源。

        在授权管理阶段,如果用户已经通过了验证,但是对于其访问的资源并没有得到许可,此时会使用拒绝操作。

        例如:

        拒绝访问处理应该让用户知道:

        在这个场景下,可以看到,验证需要提供的基本功能就包括了验证和验证失败后的拒绝服务两个操作。在 ASP.NET Core 中,验证被称为 Authenticate,拒绝被称为 Forbid。 在供消费者访问的网站上,如果我们希望在验证失败后,不是像 API 一样直接返回一个错误页面,而是将用户导航到登录页面,那么,就还需要增加一个操作,这个操作的本质是希望用户再次提供安全凭据,在 ASP.NET Core 中,这个操作被称为 Challenge。这 3 个操作结合在一起,就是验证最基本的要求,以接口形式表示,就是 IAuthenticationHandler 接口,如下所示:

        验证的结果是一个 AuthenticateResult 对象。值得注意的是,它还提供了一个静态方法 NoResult() 用来返回没有得到结果,静态方法 Fail() 生成一个表示验证异常的结果,而 Success() 成功则需要提供验证票据。

        通过验证之后,会返回一个包含了请求者票据的验证结果。

        在 GitHub 中查看 AuthenticateResult 源码

        那么验证的信息来自哪里呢?除了前面介绍的 3 个操作之外,还要求一个初始化的操作 Initialize,通过这个方法来提供当前请求的上下文信息。

        在 GitHub 中查看 IAuthenticationHandler 定义

        有的时候,我们还希望提供登出操作,增加登出操作的接口被称为 IAuthenticationSignOutHandler。

        在 GitHub 中查看 IAuthenticationSignOutHandler 源码

        在登出的基础上,如果还希望提供登录操作,那么就是 IAuthenticationSignInHandler 接口。

        在 GitHub 中查看 IAuthenticationSignInHandler 源码

        直接实现接口还是比较麻烦的,在命名空间 Microsoft.AspNetCore.Authentication 下,微软提供了抽象基类 AuthenticationHandler 以方便验证控制器的开发,其它控制器可以从该控制器派生,以取得其提供的服务。

        通过类的定义可以看到,它使用了泛型。每个控制器应该有一个对应该控制器的配置选项,通过泛型来指定验证处理器所使用的配置类型,在构造函数中,可以看到它被用于获取对应的配置选项对象。

        在 GitHub 中查看 AuthenticationHandler 源码

        通过 InitializeAsync(),验证处理器可以获得当前请求的上下文对象 HttpContext。

        最终,作为抽象类的 ,希望派生类来完成这个验证任务,抽象方法 HandleAuthenticateAsync() 提供了扩展点。

        验证的结果是一个 AuthenticateResult。

        而拒绝服务则简单的多,直接在这个抽象基类中提供了默认实现。直接返回 HTTP 。

        剩下的一个也一样,提供了默认实现。直接返回 HTTP 响应。

        对于 JWT 来说,并不涉及到登入和登出,所以它需要从实现 IAuthenticationHandler 接口的抽象基类 AuthenticationHandler 派生出来即可。从 AuthenticationHandler 派生出来的 JwtBearerHandler 实现基于自己的配置选项 JwtBearerOptions。所以该类定义就变得如下所示,而构造函数显然配合了抽象基类的要求。

        在 GitHub 中查看 JwtBearerHandler 源码

        真正的验证则在 HandleAuthenticateAsync() 中实现。下面的代码是不是就很熟悉了,从请求头中获取附带的 JWT 访问令牌,然后验证该令牌的有效性,核心代码如下所示。

        在 GitHub 中查看 JwtBearerHandler 源码

        在 ASP.NET Core 中,你可以使用各种验证处理器,并不仅仅只能使用一个,验证控制器需要一个名称,它被看作该验证模式 Schema 的名称。Jwt 验证模式的默认名称就是 "Bearer",通过字符串常量 JwtBearerDefaults.AuthenticationScheme 定义。

        在 GitHub 中查看 JwtBearerDefaults 源码

        最终通过 AuthenticationBuilder 的扩展方法 AddJwtBearer() 将 Jwt 验证控制器注册到依赖注入的容器中。

        在 GitHub 中查看 JwtBearerExtensions 扩展方法源码

        一种验证处理器,加上对应的验证配置选项,我们再为它起一个名字,组合起来就成为一种验证架构 Schema。在 ASP.NET Core 中,可以注册多种验证架构。例如,授权策略可以使用架构的名称来指定所使用的验证架构来使用特定的验证方式。在配置验证的时候,通常设置默认的验证架构。当没有指定验证架构的时候,就会使用默认架构进行处理。

        还可以

        注册的验证模式,最终变成 AuthenticationScheme,注册到依赖注入服务中。

        在 GitHub 中查看 AuthenticationScheme 源码

        各种验证架构被保存到一个 IAuthenticationSchemeProvider 中。

        在 GitHub 中查看 IAuthenticationSchemeProvider 源码

        最终的使用是通过 IAuthenticationHandlerProvider 来实现的,通过一个验证模式的字符串名称,可以取得所对应的验证控制器。

        在 GitHub 中查看 IAuthenticationHandlerProvider 源码

        它的默认实现是 AuthenticationHandlerProvider,源码并不复杂。

        在 GitHub 中查看 AuthenticationHandlerProvider 源码

        验证中间件的处理就没有那么复杂了。

        找到默认的验证模式,使用默认验证模式的名称取得对应的验证处理器,如果验证成功的话,把当前请求用户的主体放到当前请求上下文的 User 上。

        里面还有一段特别的代码,用来找出哪些验证处理器实现了 IAuthenticationHandlerProvider,并依次调用它们,看看是否需要提取终止请求处理过程。

        在 GitHub 中查看 AuthenticationMiddle 源码