ASP.NET のこれらのクラスの違いは何ですか? 私が発見したように、これらのクラス間に継承関係はありません。
以下のコードは、HttpRequestWrapper
whichのインスタンスを返しis a
HttpRequestBase
、has 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 を使用する必要があります」のようなことを言えますか?