我發現自己在C#中編寫了很多URL應用程序設置。通常我只是將它們存儲爲SomreURL
,但其他時候我會使用單獨的Scheme,Host和Path部件。在App.Config或AppSettings.json中存儲URL的最佳方式
有沒有人有他們如何處理設置文件中的網址的最佳做法,以及他們如何處理缺少斜線等?
我發現自己在C#中編寫了很多URL應用程序設置。通常我只是將它們存儲爲SomreURL
,但其他時候我會使用單獨的Scheme,Host和Path部件。在App.Config或AppSettings.json中存儲URL的最佳方式
有沒有人有他們如何處理設置文件中的網址的最佳做法,以及他們如何處理缺少斜線等?
Uri
類有一些方法可以幫助您製作網址。
假設你存儲方案,主機和路徑部分分開,你可以這樣做:
string scheme = "https://", host = "stackoverflow.com", path = "questions/44707782/best-way-to-store-urls-in-app-config-or-appsettings-json";
var base = new Uri(String.Concat(scheme, host));
var uri = new Uri(base, relative);
我想有一個靜態Settings
類:
public static class Settings
{
public static string Scheme => ConfigurationManager.AppSettings["Scheme"];
public static string Host => ConfigurationManager.AppSettings["Host"];
public static string Path => ConfigurationManager.AppSettings["Path"];
public static Uri BaseUri => new Uri(String.Concat(Scheme, Host));
public static Uri SomeUri => new Uri(BaseUri, Path);
}
一種方法來驗證您的設置是在您的設置類中使用一種稱爲「驗證」的方法,該方法嘗試使用其中一個Uris
public static void Validate()
{
var valid = SomeUri; // will throw exception if not valid Uri
}
然後從你的創業階層:
Settings.Validate();
我不喜歡這種方法。 'Uri'類可以解構/解析完整的URL。存儲完整的網址需要一個AppSettings條目,並且可以減少輸入錯誤的機率,因爲它允許您從瀏覽器地址欄進行復制/粘貼。與任何事情一樣,實際使用案例應該規定設計。有合理的情況下,分開的東西會更有用。 –
是的,我並不太熱衷於將Uri部分存儲在配置中,除非有明確的需要(可能會在dev和prod之間交換http和https)。我的答案更多地是使用設置類,以便您可以在需要時處理和驗證設置。 –
是的。設置類是一個好主意。 –
我不同意這是基於意見的。我認爲一個合適的答案會顯示其他人過去如何解決這個問題。我相信巨人的想法。我認爲當人們谷歌,發現這個問題會幫助他們! –