”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在“配置服务”中手动解析ASP.NET核心服务?

如何在“配置服务”中手动解析ASP.NET核心服务?

发布于2025-03-22
浏览:147

How Can I Manually Resolve ASP.NET Core Services in `ConfigureServices`?

ConfigureServices中手动解析ASP.NET Core服务

ASP.NET Core 中用于配置依赖注入容器的 ConfigureServices 方法不提供直接解析服务的方法。 要从此方法手动解析服务,需要采用替代方法。

服务提供程序模式

为了解析服务,ASP.NET Core 使用服务提供程序模式。 服务集合构建完成后,它将转换为 IServiceProvider 实例,允许解析服务。

注入服务提供程序

解析服务的一种方法是将 IServiceProvider 实例注入到 Startup 类的构造函数中。 但是,此方法仅提供对托管层注入的有限的必要服务的访问。

使用ApplicationServices

Configure 方法中,IApplicationBuilder 提供 ApplicationServices 属性,其中包含一个服务提供程序,可以访问所有已注册的服务。

public void Configure(IApplicationBuilder app)
{
    var serviceProvider = app.ApplicationServices;
    var fooService = serviceProvider.GetService();
}

构建中间服务提供程序

要在 ConfigureServices 方法中解析服务,可以从部分构建的服务集合构建中间服务提供程序。 但是,这仅包括在此之前注册的服务。

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton();

    var sp = services.BuildServiceProvider();
    var fooService = sp.GetService();
}

避免手动解析

通常不建议手动解析服务,因为它违反了依赖注入原则。 相反,请使用注入或在 Configure 方法中利用服务提供程序注入。

最新教程 更多>
  • 如何使用员工数据在ASP.NET Core MVC中填充选择的标签助手?
    如何使用员工数据在ASP.NET Core MVC中填充选择的标签助手?
    [2 asp.net核心MVC选择标签助手:使用员工数据填充 本指南演示了如何使用ASP.NET Core Select Select Tag Helper填充HTML 1。模型创建: 首先,定义一个视图模型保存员工列表: 和 lightee public class Employe...
    编程 发布于2025-03-22
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-03-22
  • 如何为C ++对象分配内存?
    如何为C ++对象分配内存?
    C对象的内存布局,对象的内存布局在很大程度上实现了定义。但是,有一些关键准则控制了如何在类或结构内组织数据成员的组织。成员variables nont static成员变量,具有相同的访问指定器(例如,公共,私人)按顺序宣布。这样可以确保可以以可预测的方式初始化和访问对象。虚拟函数管理很少,该...
    编程 发布于2025-03-22
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-03-22
  • 使用.NET中的混合模式组件时,如何解决“所需的其他配置信息”错误?
    使用.NET中的混合模式组件时,如何解决“所需的其他配置信息”错误?
    [2 在.net Projects 中进行混合模式汇编兼容性故障排除 引用.NET 4.0项目中的.NET 2.0混合模式组件可能会触发要求“其他配置信息”的错误。 这源于混合模式组件的固有兼容性挑战(结合托管和不受管理的代码)时,将其集成到较新的.NET框架中。 为混合模式汇编配置 解决方案涉及...
    编程 发布于2025-03-22
  • 如何同步迭代并从PHP中的两个等级阵列打印值?
    如何同步迭代并从PHP中的两个等级阵列打印值?
    同步的迭代和打印值来自相同大小的两个数组使用两个数组相等大小的selectbox时,一个包含country代码的数组,另一个包含乡村代码,另一个包含其相应名称的数组,可能会因不当提供了exply for for for the uncore for the forsion for for ytry...
    编程 发布于2025-03-22
  • 如何将JARS临时在Javac,Ant和Java命令中临时添加?
    如何将JARS临时在Javac,Ant和Java命令中临时添加?
    在commandline(javac或apt)上包括JARS 在尝试执行程序时,您可能会遇到compounter错误,表明classpath中没有必要的jars。一个这样的罐子是JSR181-API.JAR,这对于Web服务功能至关重要。避免修改bash_rc文件,您可以将所需的jar暂时包含在c...
    编程 发布于2025-03-22
  • 如何有效地在Java中串联串联列表?
    如何有效地在Java中串联串联列表?
    java:有效地将字符串列表在Java中,有几种方法可以将多个字符串从列表中组合到单个字符串中。虽然可以手动创建一个循环并将每个字符串附加到一个字符串构造器上,并检查第一个字符串并相应地添加一个分离器,但此方法可能很麻烦。 public static String join join(CharS...
    编程 发布于2025-03-22
  • 如何使Flexbox儿童占据父母身高的100%?
    如何使Flexbox儿童占据父母身高的100%?
    如何使flexbox孩子占据父母的100%高度 在尝试填充flex box中的flex项目的垂直空间时,可能会遇到一个问题。已经提出了各种方法。一种常见的解决方案是将父元件的高度设置为.flex-2,为100%。但是,这种方法可以导致不同浏览器(例如Chrome)的不一致和错误。一种替代方法是利用...
    编程 发布于2025-03-22
  • 如何在不重新启动的情况下终止非活动的MySQL连接?
    如何在不重新启动的情况下终止非活动的MySQL连接?
    终止无效的mysql connections 手动终止一种方法是使用kill命令手动终止空闲连接。 To identify the process ID for the idle connection, execute the following query:mysql> show full p...
    编程 发布于2025-03-22
  • 如何使用C#中的单独方法在图片框上有效地绘制图片框?
    如何使用C#中的单独方法在图片框上有效地绘制图片框?
    C# PictureBox 绘图:使用独立方法的高效技巧 在 C# 窗体应用程序中,可以在 PictureBox 控件上绘制自定义图形。然而,用户在尝试通过单独的方法执行此操作时可能会遇到问题。 问题: 用户可能希望创建一个方法来方便地在 PictureBox 上绘制圆圈,但发现该方法无法产生预期...
    编程 发布于2025-03-22
  • 反应听起来很硬/复杂吗?
    反应听起来很硬/复杂吗?
    对您的反应似乎不堪重负? 如果是这样,您并不孤单。 我一直都在听到类似的事情: 不要使用react;改用Vue。 react是坚硬且无用的;代替使用HTMX或Vanilla JS。ETC。 ,但是作为Palantir有5年经验的高级前端工程师,我可以自信地说:在这篇文章中,我将解释为什么反应不像...
    编程 发布于2025-03-22
  • 如何使用枢轴函数将行转换为SQL Server中的列?
    如何使用枢轴函数将行转换为SQL Server中的列?
    使用 SQL Server 中的 PIVOT 函数将行转换为列 问题 SQL Server 中的数据透视表提供了一种强大的方法,可以将数据从行转置为列。但是,用户在构建正确的查询时可能会遇到挑战。 解决方法 针对已知列值使用 PIVOT 函数: 对于预定义的列值(在本例中为周数),可以直接使用 P...
    编程 发布于2025-03-22
  • 如何在保留最新消息的同时删除MySQL中的重复记录?
    如何在保留最新消息的同时删除MySQL中的重复记录?
    在MySQL中删除重复记录时在数据库中保留最新的为了解决此问题,我们可以采用以下步骤:Find the Latest ID for Each Duplicate Email: For each duplicate email, retrieve the highest ID, which repr...
    编程 发布于2025-03-22
  • 如何修复\“ count():参数必须是phpMyAdmin中实现可计数\”错误的数组或对象?
    如何修复\“ count():参数必须是phpMyAdmin中实现可计数\”错误的数组或对象?
    Count(): Parameter Must be an Array or an Object Implementing CountableIssue:When opening a table in phpMyAdmin, users encounter a warning: "coun...
    编程 发布于2025-03-22

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3