ASP.NET Core-獲取Server物件
阿新 • • 發佈:2020-07-16
實現一個.net framework中Server功能
ConfigureWebServices(this IServiceCollection services){
services.AddSingleton(typeof(HttpServerUtilityBase));
}
/// <summary> /// https://stackoverflow.com/questions/43992261/how-to-get-absolute-path-in-asp-net-core-alternative-way-for-server-mappath /// </summary> public class HttpServerUtilityBase { private IWebHostEnvironment _webhostEnvironment; public HttpServerUtilityBase(IWebHostEnvironment webhostEnvironment) { this._webhostEnvironment = webhostEnvironment; } /// <summary> /// 實現DotNet FrameWork裡面的MapPath /// </summary> /// <param name="path">相容~/和/開頭的絕對路徑</param> /// <returns></returns> public string MapPath(string path) { string rootPath = this._webhostEnvironment.WebRootPath; if (string.IsNullOrWhiteSpace(path)) { return rootPath; } if (path.StartsWith("~/")) { path = path.Substring(2); } if (path.StartsWith("/")) { path = path.Substring(1); } return Path.Combine(rootPath, path.Replace('/', Path.DirectorySeparatorChar)); } /// <summary> /// https://stackoverflow.com/questions/35437491/webutility-htmldecode-replacement-in-net-core /// </summary> public string HtmlEncode(string value) { return System.Web.HttpUtility.HtmlEncode(value); //https://edi.wang/post/2018/11/25/netcore-webutility-urlencode-httputility-urlencode //return System.Net.WebUtility.HtmlEncode(value); } public string HtmlDecode(string value) { return System.Web.HttpUtility.HtmlDecode(value); } public string UrlEncode(string value) { return System.Web.HttpUtility.UrlEncode(value); } public string UrlDecode(string value) { return System.Web.HttpUtility.UrlDecode(value); } public string Base64UrlEncode(string text, Encoding encoding) { byte[] bytes = encoding.GetBytes(text); return Base64UrlEncode(bytes); } public string Base64UrlEncode(byte[] bytes) { return Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Encode(bytes); } public string Base64UrlDecode(string text, Encoding encoding) { byte[] bytes = Base64UrlDecode(text); return encoding.GetString(bytes); } public byte[] Base64UrlDecode(string text) { return Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Decode(text); } /// <summary> /// 生成帶有引數的Url /// </summary> /// <param name="uri"></param> /// <param name="queryString"></param> /// <returns>URL編碼之後的結果</returns> public string AddQueryString(string uri, IDictionary<string, string> queryString) { return Microsoft.AspNetCore.WebUtilities.QueryHelpers.AddQueryString(uri, queryString); } /// <summary> /// 將Url裡面的引數取出來變成鍵值對格式的 /// </summary> /// <param name="queryString"></param> /// <returns></returns> public IDictionary<string, Microsoft.Extensions.Primitives.StringValues> ParseNullableQuery(string queryString) { return Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseNullableQuery(queryString); } }