HttpRequest를 HttpRequestBase 개체로 어떻게 변환합니까?
내 문제는 이것의 반대입니다. HttpRequestBase를 HttpRequest 객체로 어떻게 변환합니까?
내 ASP.NET MVC 응용 프로그램에는 HttpRequestBase를 인수로받는 많은 컨트롤러에서 사용하는 메서드가 있습니다.
이제 다른 메서드에서 해당 메서드를 호출해야합니다. 이는 작업이 아닙니다 (nhibernate 인터셉터입니다). 이 두 번째 방법에서는 HttpContext.Current.Request에 액세스 할 수 있는데, 이는 HttpRequest이며 HttpRequestBase로 캐스팅 할 수 없습니다 (이름 지정으로 인해 가능하다고 생각했습니다 ...).
누군가이 수업이 어떤 관계인지 알고 어떻게 내 문제를 해결할 수 있습니까? 감사합니다.
다음 HttpRequest
과 같이 포장하고 싶을 것입니다 HttpRequestWrapper
.
var wrapper = new HttpRequestWrapper(httpRequest);
HttpRequestWrapper
상속에서 HttpRequestBase
.
새 인스턴스를 만들 필요가없는 대체 솔루션 :
var httpRequestBase = httpRequest.RequestContext.HttpContext.Request;
MVC 5에서 이것을 테스트했습니다.
다음 확장 방법이 유용하다고 생각합니다.
public static HttpContextBase AsBase(this HttpContext context)
{
return new HttpContextWrapper(context);
}
public static HttpRequestBase AsBase(this HttpRequest context)
{
return new HttpRequestWrapper(context);
}
용법:
HttpContext.Current.AsBase()
HttpContext.Current.Request.AsBase()
내 응용 프로그램에서 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 답변을 발견했습니다.
'Development Tip' 카테고리의 다른 글
가져올 진행률 표시기를 업로드 하시겠습니까? (0) | 2020.10.27 |
---|---|
로컬 Maven 프록시 저장소 (Nexus)를 사용하기 위해 sbt를 얻으려면 어떻게해야합니까? (0) | 2020.10.27 |
git 별칭을 어떻게 삭제할 수 있습니까? (0) | 2020.10.26 |
Visual Studio 용 Xamarin을 사용하여 실제 Android 디바이스에서 디버그하려면 어떻게하나요? (0) | 2020.10.26 |
C #에서 AppDomain 사용 (0) | 2020.10.26 |