สำหรับบรรดาของคุณที่กำลังใช้ 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);
        }
การร้องขอวิธีการจะให้ "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
ค.