आपमें से जो 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 कॉलबैक पैरामीटर को पुनः प्राप्त कर सकता है। इस प्रकार मेरा संशोधित कोड इस तरह दिखता है:
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 शिम चाहिए।
सी।