6

次のように、現在の URL の文字列を取得するための簡単なコードを作成しようとしています。

string currentURL = HttpContext.Current.Request.Url.ToString();

ただし、コードを実行するとエラーが発生します。Object reference not set to an instance of an object.

HttpContext のインスタンスを作成する必要があると思います。HttpContext の引数は、 または のいずれHttpContext(HttpRequest request, HttpResponse response)HttpContext(HttpWorkerRequest wr)です。

これらの引数の操作方法を詳しく説明したドキュメントはありますか? 私は C# にかなり慣れていないので、このオブジェクトを適切にインスタンス化する方法が完全にはわかりません。また、役立つリソース (MS ライブラリを含む) も見つかりませんでした。

4

1 に答える 1

10

HttpContextオブジェクトは、ASP.NET インフラストラクチャによって、要求スレッドごとに 1 回インスタンス化されます。ASP.NET を使用するには、Web サーバー(IIS など) で ASP.NET を実行している必要があります。ユーザーコードで初期化することを意図したものではありません。HttpContext.Current 静的プロパティを介してそのインスタンスに既にアクセスしています。ASP.NET を実行していない場合はnull になります。

ただし、本当に必要な場合は、既存の のリクエストとレスポンスに基づいてインスタンスを作成できますHttpContext

var request    = HttpContext.Current.Request;
var response   = HttpContext.Current.Response;
var newContext = new HttpContext(request, response);
于 2013-10-07T14:32:14.823 に答える