如何在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"))" />看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。