60

ASP.NET のこれらのクラスの違いは何ですか? 私が発見したように、これらのクラス間に継承関係はありません。

以下のコードは、HttpRequestWrapperwhichのインスタンスを返しis a HttpRequestBasehas a HttpRequest

HttpRequestMessage request = ...;
HttpRequestBase reqBase = (request.Properties["MS_HttpContext"] as HttpContextWrapper).Request;
// do somthing with reqBase.Cookies

Microsoft は、HttpRequestMessage から Cookie に到達する際に私たちを悩ませたかったようです。

request.Properties["MS_HttpContext"]決してnullにならないことが保証されていますか?

または、ApiController のアクションで ajax リクエストが処理されると考えてください。2 つの異なる方法でクライアントの IP に到達できます。

var ip = (request.Properties["MS_HttpContext"] as HttpContextWrapper).Request.UserHostAddress

var ip = HttpContext.Current.Request.UserHostAddress

これら2つの違いは何ですか?

または、一般に、Cookie、ヘッダー、リクエスター情報などの同じ要求/応答データにさまざまな方法でアクセスできます。いつどれを使う?「それが ajax リクエストの場合、何かが不足しているため HttpRequest が適切に機能することが保証されていないため、ajax リクエストの場合は代わりに HttpRequestMessage を使用する必要があります」のようなことを言えますか?

4

1 に答える 1