HttpContext.Current.Server.UrlEncode
.NET Frameworkでのみ機能します。ASP.NET CoreプロジェクトでURI引数をエンコードまたはデコードするにはどうすればよいですか?
HttpContext.Current
が、HttpContext
ネットコアの一部です- Microsoft.AspNetCore.Http.HttpContext
。このことを覚えておいてください
HttpContext.Current.Server.UrlEncode
.NET Frameworkでのみ機能します。ASP.NET CoreプロジェクトでURI引数をエンコードまたはデコードするにはどうすればよいですか?
HttpContext.Current
が、HttpContext
ネットコアの一部です- Microsoft.AspNetCore.Http.HttpContext
。このことを覚えておいてください
回答:
ASP.NET Core 2.0+の場合は、System.Net
名前空間を追加するだけです- WebUtility
クラスはSystem.Runtime.Extensions
、ASP.NET Coreプロジェクトでデフォルトで参照されるnugetパッケージの一部として出荷されます。
以前のバージョンの場合は、Microsoft.AspNetCore.WebUtilities
nugetパッケージを追加します。
その後、WebUtility
クラスが利用可能になります:
public static class WebUtility
{
public static string UrlDecode(string encodedValue);
public static string UrlEncode(string value);
}
それは上の利用可能です。ネットコアSDKのバージョン2.0.0には、System.Net.WebUtility.UrlEncode
(ドキュメントを参照してください)
System.Net.WebUtility.UrlEncode
:スペースは+
。以前Uri.EscapeDataString
はでエンコードしていました%20
。
あなたの時間を無駄にしないでください、私はこれらのいわゆるurlエンコーダーで多くの経験を持っています。それらはすべて役に立たず、異なる癖があります。たとえば、WebUtility.UrlEncodeは「+」記号を処理しません。
URLパラメータをエンコードする場合は、BASE58エンコードを使用します。アルファベット+数字のみを使用するため、URLエンコードする必要はありません。
WebUtility.UrlEncode
、プラス記号( "+")が "%2B"に見事に変換されました。.NET Core 3.1を使用しています。
私はリダイレクトを使用していますが、UrlEncodeはURL全体をエンコードするため機能しませんでした。代わりに、次に示すUriHelper.Encodeを使用してこれを解決しました。
// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));