溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在asp.net core中使用Application服務

發布時間:2021-05-27 16:55:13 來源:億速云 閱讀:345 作者:Leah 欄目:開發技術

如何在asp.net core中使用Application服務?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Intro#

在 asp.net 中,我們可以借助 Application 來保存一些服務器端全局變量,比如說服務器端同時在線的人數計數,比如一些網站的配置信息。

在 ASP.NET 應用中,之前開發的活動室預約系統把網站的 keyword 以及 Title 等信息,在網站啟動的時候會從數據庫加載配置并保存到 Application 中,在需要的地方直接使用 Application 來獲取,后臺更新配置之后,更新 Application 變量,這樣就不需要重啟網站就可以更新網站配置信息了,在 Razor 頁面上使用示例:

<title>@ViewBag.Title - @HttpContext.Current.Application["SystemTitle"]</title>
<meta name="keywords" content="@HttpContext.Current.Application["SystemKeywords"]" />

遷移到 asp.net core 后,就不能直接這樣用了,于是自己實現了一個服務,去加載網站配置信息,比較簡單簡陋,權當是拋磚引玉,不喜勿噴

自定義 Application 服務 IApplicationSettingService#

服務接口定義:

IApplicationSettingService

 public interface IApplicationSettingService
 {
  string GetSettingValue(string settingKey);

  string SetSettingValue(string settingKey, string settingValue);

  int AddSettings(Dictionary<string, string> dictionary);
 }

基于一個字典對象的簡單實現:

ApplicationSettingInMemoryService

 public class ApplicationSettingInMemoryService : IApplicationSettingService
 {
  private readonly ConcurrentDictionary<string, string> _settingDictionary = new ConcurrentDictionary<string, string>();

  public int AddSettings(Dictionary<string, string> dictionary)
  {
   if (dictionary != null && dictionary.Count > 0)
   {
    foreach (var item in dictionary)
    {
     _settingDictionary[item.Key] = item.Value;
    }
   }
   return _settingDictionary.Count;
  }

  public string GetSettingValue(string settingKey)
  {
   _settingDictionary.TryGetValue(settingKey, out var val);
   return val;
  }

  public string SetSettingValue(string settingKey, string settingValue)
  {
   _settingDictionary[settingKey] = settingValue;
   return settingValue;
  }
 }

也可以根據自己的需要寫不同的實現,比如放在配置中或者自己的緩存中,這里應用暫時是單體應用,所以只是放在了內存對象中。

使用#

1.在 Startup 中注冊服務:

services.TryAddSingleton<IApplicationSettingService, ApplicationSettingInMemoryService>();

2.從數據庫中讀取配置信息,初始化配置數據

3.在 Razor 頁面上使用,示例

@using ActivityReservation.Services
@inject IApplicationSettingService applicationSettings
/* 此處省略 N 行代碼 ... */
<title>@($"{ViewBag.Title} -- {applicationSettings.GetSettingValue("SystemTitle")}") </title>
<meta name="keywords" content="@(applicationSettings.GetSettingValue("SystemKeywords"))" />

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女