」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在“配置服務”中手動解析ASP.NET核心服務?

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

發佈於2025-03-22
瀏覽:251

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 方法中利用服務提供程序注入。

最新教學 更多>
  • 為什麼外部實例變量在Java匿名內部類中最終最終?
    為什麼外部實例變量在Java匿名內部類中最終最終?
    為什麼在Java Inner class 在Java中定義java的匿名內部類時,外部類實例實例變量的最終結果必須指定最終。如果未滿足此要求,則會發生錯誤“在不同方法中定義的內部類中的非最終變量[變量名稱]”將發生。 此要求存在,因為內部類需要訪問外部類實例變量。為了防止不一致或意外的運行時行為,...
    程式設計 發佈於2025-03-22
  • Python讀取CSV文件UnicodeDecodeError終極解決方法
    Python讀取CSV文件UnicodeDecodeError終極解決方法
    在試圖使用已內置的CSV模塊讀取Python中時,CSV文件中的Unicode Decode Decode Decode Decode decode Error讀取,您可能會遇到錯誤的錯誤:無法解碼字節 在位置2-3中:截斷\ uxxxxxxxx逃脫當CSV文件包含特殊字符或Unicode的路徑逃...
    程式設計 發佈於2025-03-22
  • 如何使用Python安全地逃脫MySQL數據庫的字符串?
    如何使用Python安全地逃脫MySQL數據庫的字符串?
    在使用Python 使用Python使用MySQL逃脫字符串,您可以利用MySQLDB庫提供的Escape_string()方法。此方法將字符串作為參數,並返回一個安全的字符串,該字符串可以安全地插入MySQL數據庫中。 現在,要逃脫字符串,只需在連接對像上使用evavage_string() ...
    程式設計 發佈於2025-03-22
  • 如何使用員工數據在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暫時包含在...
    程式設計 發佈於2025-03-22
  • 如何有效地在Java中串聯串聯列表?
    如何有效地在Java中串聯串聯列表?
    java:有效地將字符串列表在Java中,有幾種方法可以將多個字符串從列表中組合到單個字符串中。雖然可以手動創建一個循環並將每個字符串附加到一個字符串構造器上,並檢查第一個字符串並相應地添加一個分離器,但此方法可能很麻煩。 public static String join(CharSequen...
    程式設計 發佈於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

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3