web-dev-qa-db-ja.com

HttpUtilityが.Net 4.5で認識されない

ターゲットフレームワークを.net 4.0に設定してWinFormアプリケーションを開発しました。ターゲットフレームワークを.net 4.5に設定したプロジェクトに追加したいと思います。 4.5プロジェクトに4.0 WinFormアプリケーションを追加した後、HttpUtilityオブジェクトでエラーが発生し続けます。

 data += "&batch_data=" + HttpUtility.UrlEncode(batch, System.Text.Encoding.GetEncoding("ISO-8859-1"));

「名前 'HttpUtility'は現在のコンテキストに存在しません」

HttpUtilityがあるSystem.Web名前空間を含めました。

Visual Studioエラー:

CS0234 The type or namespace name 'HttpUtility' does not exist in the namespace 'System.Web' (are you missing an Assembly reference?)
20
Marnus_Steyn

問題はどこかにあります。

[〜#〜] msdn [〜#〜] でわかるように、HttpUtilityクラスは.NET Framework 4.5のSystem.Webにあります。

クライアントプロファイルをターゲットにしている可能性があります。プロジェクトプロパティで完全なフレームワークをターゲットにします。さもないと:

  • ステートメントusing System.Web;を使用して権利を追加しなかったか
  • または、プロジェクトのSystem.Web.dllへの参照を追加しませんでした。
45
giammin

WebUtility

別の可能性もあります: WebUtility class を使用します。 WebUtilityクラスは、Microsoft自体が推奨しており、Webアプリケーションの外部で使用する必要があります。

HttpUtilityクラスと同様に、URLをエンコードおよびデコードする可能性も提供します。

このようにして、ライブラリをプロジェクトにインポートしたり、特定のプロファイルを設定したりしても問題はありません。


ドキュメントから( Source

HttpUtilityクラスは、HttpServerUtilityクラスによって内部的に使用されます。HttpServerUtilityクラスのメソッドとプロパティは、組み込みのASP.NETサーバーオブジェクトを通じて公開されます。さらに、HttpUtilityクラスには、サーバーからアクセスできないエンコードおよびデコードユーティリティメソッドが含まれています。

Webアプリケーションの外部で値をエンコードまたはデコードするには、WebUtilityクラスを使用します。

5
kamwo

HttpUtilityクラスは.NET 1.1に存在するため、System.Webへの参照を含めている限り、通常のプロジェクトでは「見えない」ことは不可能だと思います。

PCL( Portable Class Library )を使用している可能性があります。PCLは、選択したプラットフォーム(Windowsストアアプリ、Windows Phone、Silverlightなど)でサポートされているフレームワークの簡易バージョンを使用します。

3
Patrick Hofman

このリンクがお役に立てば幸いです。 http://msdn.Microsoft.com/en-us/library/system.web.httputility(v = vs.110).aspx ドットネットフレームワーク4.5は、System.Webの下にあるHttpUtilityをサポートします名前空間。また、System.Web.Extensions参照なしで、プロジェクトにSystem.Web参照を追加します。動作しない場合は、既存のものを削除し、System.Webの新しい参照をプロジェクトに追加します。また、対象とするフレームワークを確認します。クライアントなしの.NET Framework 4または4.5である必要があります。

1
Rahul