HttpSelfHostServer를 사용하는 사용자의 경우이 코드 섹션은 HttpContext.Current에서 실패합니다. 이는 자체 호스트 서버에 없기 때문입니다.
private Tuple<bool, string> IsJsonpRequest()
{
if(HttpContext.Current.Request.HttpMethod != "GET")
return new Tuple<bool, string>(false, null);
var callback = HttpContext.Current.Request.QueryString[CallbackQueryParameter];
return new Tuple<bool, string>(!string.IsNullOrEmpty(callback), callback);
}
그러나이 재정의를 통해 자체 호스트 "컨텍스트"를 가로 챌 수 있습니다.
public override MediaTypeFormatter GetPerRequestFormatterInstance(Type type, HttpRequestMessage request, MediaTypeHeaderValue mediaType)
{
_method = request.Method;
_callbackMethodName =
request.GetQueryNameValuePairs()
.Where(x => x.Key == CallbackQueryParameter)
.Select(x => x.Value)
.FirstOrDefault();
return base.GetPerRequestFormatterInstance(type, request, mediaType);
}
request.Method는 "GET", "POST"등을 제공하며 GetQueryNameValuePairs는? callback 매개 변수를 검색 할 수 있습니다. 따라서 수정 된 코드는 다음과 같습니다.
private Tuple<bool, string> IsJsonpRequest()
{
if (_method.Method != "GET")
return new Tuple<bool, string>(false, null);
return new Tuple<bool, string>(!string.IsNullOrEmpty(_callbackMethodName), _callbackMethodName);
}
이것이 당신의 일부를 돕기를 바랍니다. 이 방법으로 반드시 HttpContext shim이 필요하지 않습니다.
씨.