मेरे पास निम्नलिखित परीक्षण WebAPI कोड है, मैं उत्पादन में WebAPI का उपयोग नहीं करता हूं, लेकिन मैंने इस प्रश्न पर चर्चा के कारण इसे बनाया है: WebAPI Async प्रश्न
वैसे भी, यहाँ अपमानजनक WebAPI विधि है:
public async Task<string> Get(int id)
{
var x = HttpContext.Current;
if (x == null)
{
// not thrown
throw new ArgumentException("HttpContext.Current is null");
}
await Task.Run(() => { Task.Delay(500); id = 3; });
x = HttpContext.Current;
if (x == null)
{
// thrown
throw new ArgumentException("HttpContext.Current is null");
}
return "value";
}
मुझे यह विश्वास था कि दूसरा अपवाद अपेक्षित है क्योंकि जब await
पूरा हो जाएगा, तो यह संभवतः एक अलग थ्रेड पर होगा जहां HttpContext.Current
थ्रेड-स्टैटिक वेरिएबल अब उचित मूल्य पर हल नहीं करेगा। अब, तुल्यकालन के संदर्भ के आधार पर, यह वास्तव में प्रतीक्षा के बाद उसी धागे पर वापस जाने के लिए मजबूर हो सकता है लेकिन मैं अपने परीक्षण में कुछ भी नहीं कर रहा हूं। यह सिर्फ एक सादा, अनुभवहीन उपयोग है await
।
एक अन्य प्रश्न में टिप्पणियों में मुझे बताया गया कि HttpContext.Current
प्रतीक्षा के बाद हल करना चाहिए। इस सवाल पर एक और टिप्पणी भी है जो इसी बात का संकेत दे रही है। तो क्या सच है? क्या इसे हल करना चाहिए? मुझे लगता है कि नहीं, लेकिन मैं इस पर एक आधिकारिक जवाब चाहता हूं async
और await
यह पर्याप्त है कि मुझे कुछ भी निश्चित नहीं मिल सकता है।
टीएल; डीआर: एक के बाद HttpContext.Current
संभावित है ?null
await