首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.Net Core 开发笔记

尝试使用 ASP.Net Core 开发web应用程序一段时间了,感觉 ASP.Net core 不论是开发体验还是各方面都很优秀,整理笔记,便于后面使用时翻看。...XXXX.Core 项目核心 (Class Library) XXXX.Infrastructure 基础设施 (Class Library) XXXX.Api API主体 (dotnet 生成)...定义项目的类型:Web,Console,Library 定义项目的目标平台:.NET Core, .NET Framework, Mono 列举项目依赖(Nuget,其他类库等) Program.cs...事实上,Web 项目的本质就是一个 Console 项目,在Main 中声明和创建了一个 IWebHost 来作为 ASP.NET Core 应用的核心,其中包含了配置信息,和Kestrel 服务。...DbContext已经实现了Unit of Work 和 Repository 模式. Controller等不应该直接使用DbContext.

1.8K10

从EFCore上下文的使用到深入剖析DI的生命周期最后实现自动属性注入

使用EF的话不可避免要和DbContext打交道,在Core中的常规用法一般是:创建一个XXXContext类继承自DbContext,实现一个拥有DbContextOptions参数的构造器,在启动类.../efcoredemo.db"); } 即使是这样,依然有不够优雅的地方,那就是连接字符串被硬编码在代码中,不能做到从配置文件读取。反正我忍受不了,只能再寻找其他方案。...把追溯对象换成_callback继续往上翻,在DI框架的核心类ServiceProvider中找到如下方法: internal ServiceProvider(IEnumerableAsp.Net Core框架在创建HostBuilder的时候会判定当前是否开发环境,在开发环境下会开启这个验证: ? 所以前面那种关闭验证的方式是错误的。...如果发生这种情况,数据库连接会一直得不到释放,至于有什么后果大家应该都明白。

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽

    DbContextPool 是 ASP.NET Core 2.1 引入的新特性,可以节省创建 DbContext 实例的开销,但没有想到其中藏着一个小坑。...最近有一个 ASP.NET Core 项目持续运行一段时间后日志中就会出现数据库连接池达到最大连接数限制的错误: System.InvalidOperationException: Timeout expired...后来实在没有其他可以怀疑的地方,唯有 DbContextPool ,于是尝试去掉 DbContextPool ,结果错误就消失了。...果然是 DbContextPool 引起的,但让人纳闷的是 DbContextPool 本来就是为了节省创建 DbContext 实例的开销,怎么反而消耗更多数据库连接,而且这个项目的负载很低,怎么可能把整个连接池都消耗殆尽呢...今天在周会上谈了这个怪问题,后来突然想到:每个 DbContext 实例都会占用一个数据库连接(SqlConnection),不启用 DbContextPool 的时候,请求一结束,对应 DbContext

    2.5K20

    【ASP.NET Core 基础知识】--身份验证和授权--使用Identity进行身份验证

    以下是ASP.NET Core Identity的主要组成部分: User Manager(用户管理器):User Manager是一个用于管理用户的核心组件。...1.2 Identity的创建和管理 在ASP.NET Core中,创建和管理Identity通常包括以下步骤: 创建ASP.NET Core 项目 首先,你需要创建一个ASP.NET Core项目。...你可以根据项目的需求进一步扩展和定制Identity的功能。...访问控制: 通过[Authorize]属性或其他身份验证过滤器,可以在控制器或动作方法级别设置访问控制。...版本兼容性: 在项目的生命周期中,Identity 框架可能会发布新的版本。在更新到新版本时,你可能需要进行一些调整以保持兼容性。

    1K00

    在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

    背景 在前一篇文章《【初学者指南】在ASP.NET MVC 5中创建GridView》中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类似于 ASP.NET web 表单的功能。...请求对象中的所有参数传递都不是安全类型的,所以我们必须手动的将它们转换到目的类型,这也将有助于开发人员专注于业务逻辑,而不用总是考虑 HTTP 参数,检查参数、转化参数。...从该对话框中,跳转到 Web,并选择 ASP.NET Web 应用程序项目,然后单击确定。 ? 在模板页面,选择 MVC,如果编写了单元测试,请先做检查,然后点击确定。...如果完成了包的安装,你将会在工程中看到以下引用界面: ? 配置数据库的连接字符串 在写控制器代码之前,我们需要为实体框架配置连接字符串,以便在操作数据库时来连接数据库。...return _dbContext ??

    5.5K80

    【ASP.NET Core 基础知识】--测试--单元测试和集成测试

    1.2 使用xUnit进行单元测试 安装 安装和配置 xUnit 在 ASP.NET Core 项目中是相对简单的。...(xUnit 核心扩展) 如果你使用的是 .NET Core CLI,可以在命令行中运行以下命令安装这些包: dotnet add package xunit dotnet add package xunit.runner.visualstudio...以下是在命令行中使用 .NET Core CLI 运行集成测试的步骤: 打开命令行或终端,并导航到包含测试项目的目录。...确保你的解决方案已经构建完成,你的测试项目和被测试项目的依赖项已经正确安装。 运行以下命令来执行测试: dotnet test 这个命令会自动发现并运行测试项目中的所有测试。...通过这些步骤,你可以在命令行中使用 .NET Core CLI 运行你的集成测试,并查看测试结果。确保在运行测试之前,你的代码已经编译成功,依赖项已经安装,并且测试环境已经设置好。

    39800

    dotnet scaffold – .NET 的下一代内容创建

    作者:Sayed Ibrahim Hashimi 排版:Rani Sun Visual Studio 中为ASP.NET Core 项目搭建脚手架是一项长期特性,是在 ASP.NET Core 发布后不久添加的...此工具是开源的,您可以在 scaffold 存储库 中查看代码。该存储库包含 dotnet scaffold 工具的代码以及其他与脚手架相关的代码。...完成此操作后,您应该会在当前工作目录中看到文件 About.cshtml 和 About.cshtml.cs。在运行此脚手架时,它将使用当前目录作为输出位置。...在本例中,将其命名为 ContactDbContext 并按下回车键。根据惯例,建议此值以 DbContext 结尾,但这不是必需的。参见下图。 按下回车键后,系统将提示您选择数据库提供程序。...在开发应用时,您可以使用 dotnet scaffold 生成其他内容。

    8800

    项目配置

    ASP.NET Core 预备知识 项目配置 假设在项目的根目录有这样一个json文件, 在ASP.NET Core项目里我们可以使用IConfigurationRoot来使用该json文件作为配置文件...当然了, 如果firstConfig里面有而secondConfig却没有的键, 它的值肯定来自firstConfig. 配置提供商 配置数据可以来自多种数据源, 它们可能是不同格式的....项目里面建立一个DbContext: 再建立一个Domain Model, 因为Model和项目的合约(接口)一样都是项目的核心内容, 所以把Model放在MyRestful.Core项目下: 然后把这个...由于Repository依赖于DbContext, 而DbContext在ASP.NET Core项目配置里是Scope的, 所以每次HTTP请求的生命周期中只有一个DbContext实例, 所以IRepository...所以我们把项目稍微重构以下, 把合约/接口以及项目的核心都放在MyRestful.Core项目里: 好的, 这次先写道这里, 项目已经做好了最基本的准备, 其余功能的扩展会随着后续文章进行.

    83620

    用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

    假设在项目的根目录有这样一个json文件, 在ASP.NET Core项目里我们可以使用IConfigurationRoot来使用该json文件作为配置文件, 而IConfigurationRoot是使用...这几个项目的关系是: MyRestful.Infrastructure 需要引用 MyRestful.Core, MyRestful.Api 需要引用其他两个.  ...再建立一个Domain Model, 因为Model和项目的合约(接口)一样都是项目的核心内容, 所以把Model放在MyRestful.Core项目下: ?...由于Repository依赖于DbContext, 而DbContext在ASP.NET Core项目配置里是Scope的, 所以每次HTTP请求的生命周期中只有一个DbContext实例, 所以IRepository...所以我们把项目稍微重构以下, 把合约/接口以及项目的核心都放在MyRestful.Core项目里: ? 好的, 这次先写道这里, 项目已经做好了最基本的准备, 其余功能的扩展会随着后续文章进行.

    1.1K00

    (转载非原创)Abp太重了?轻量化Abp框架

    Abp为我们生成的项目,减少了我们初始化项目的工作量,开箱即用,因此将我们可能会使用的Nuget包预先引入到我们的项目中,也就给我们一种依赖项太多的感觉。...接下来将创建一个原生的ASP.NET Core Web API项目,围绕模块化和依赖注入两个核心概念,来展示如何以最小依赖的方式使用Abp。...数据访问 要想实现数据访问功能,首先我们需要定义Entity、DbContext并配置数据库支持。...在Abp的层次架构中,Entity、Repository属于领域层,Service属于应用层,DbContext则属于EntityFramework Core模块,因此我们按需引入所需模块即可。...在本文之初,我便提出了Abp的核心是模块化及依赖注入的观点,当我们将入门的重点放在模块化和依赖注入上,那么会发现Abp是一个极易上手并且学习曲线很平缓的框架。

    1.3K10

    学完这篇依赖注入,与面试官扯皮就没有问题了。

    在webapp:scoped service 会在请求结束时被销毁; 在EFCore:使用AddDbContext默认注册的是特定范围的DbContext,这意味在我们可以在一次sql连接内,使用同一个...DbContext实例进行多次DB操作。...2.3 依赖注入实现原理 结合理论、使用方式 猜测依赖注入的原理: 实现DI,核心在于依赖注入容器IContainer,该容器具有以下功能 ①....3.源码导航 利用反射产生对象是依赖注入的核心过程,这也是面试造航母时经常问到的。...干货旁白 控制反转是一种在软件工程中解耦合的思想,调用方依赖接口或抽象类,减少了耦合,控制权交给了服务容器,由容器维护注册项,并将具体的实现动态注入到调用方。

    1.3K31

    多线程下的调用上下文 : CallContext

    数据槽不在其他逻辑线程上的调用上下文之间共享。当 CallContext 沿执行代码路径往返传播并且由该路径中的各个对象检查时,可将对象添加到其中。...在Web环境下等于System.Web.HttpContext.Current 2 探究CallContext方法 上面介绍了CallContext提供的核心方法,下面我们就来通过实践来理解一下。...例如,下面是一个示例代码,我们可以借助AsyncLocal来自己实现一个CallContext类。...而且,有时候一个线程并不一定是拿去处理请求了,如果是服务器拿去处理其他的业务,那就可能引发一些其他的问题。...这时,或许我们可以考虑另一个方案,在ASP.NET中的HttpContext中有一个Items属性,它也可以用来保存key-value,这就完美了,一次请求正好对应着一个HttpContext,请求结束

    93620
    领券