私のアプリケーションでは、HttpRequestBaseへのアクセスが必要ないくつかの異なる場所からの呼び出しがありました。この拡張メソッドのセットを作成して、いくつかの異なるHttpタイプを取得してHttpRequestBaseに変換し、リクエストにアクセスする必要があるときに、アプリケーションを介してインターフェイスメソッドとクラスメソッドのベースタイプとしてHttpRequestBaseを使用しました。
public static class RequestExtensions
{
public static HttpRequestBase GetHttpRequestBase(this HttpContext httpContext)
{
if (httpContext == null)
{
throw new ArgumentException("Context is null.");
}
return httpContext.Request.ToHttpRequestBase();
}
public static HttpRequestBase GetHttpRequestBase(this HttpRequestMessage httpRequestMessage)
{
if (httpRequestMessage == null)
{
throw new ArgumentException("Request message is null.");
}
HttpContextWrapper context = null;
if (httpRequestMessage.Properties.ContainsKey("MS_HttpContext"))
{
context = httpRequestMessage.Properties["MS_HttpContext"] as HttpContextWrapper;
}
if (context == null)
{
throw new ArgumentException("Context is null.");
}
return context.Request;
}
public static HttpRequestBase GetHttpRequestBase(this HttpApplication httpApplication)
{
if (httpApplication == null)
{
throw new ArgumentException("Application is null.");
}
return httpApplication.Request.ToHttpRequestBase();
}
public static HttpRequestBase ToHttpRequestBase(this HttpRequest httpRequest)
{
if (httpRequest == null)
{
throw new ArgumentException("Request is null.");
}
return new HttpRequestWrapper(httpRequest);
}
}
私はこれらの拡張機能を構築するのに役立ついくつかのSOの答えに出くわしました: