आंतरिक हैंडलर के SendAsync() को कॉल करने से पहले, और आंतरिक हैंडलर पूरा होने के बाद सिंक्रोनस काम निष्पादित करने से पहले मैं समकालिक काम निष्पादित करने में सहज हूं। उदाहरण:एक प्रतिनिधिमंडल को एसिंक कॉल (एएसपी.नेट एमवीसी वेब एपीआई) कैसे बनाना चाहिए?
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
// do some sync work before inner handler here
var sendTask = base.SendAsync(request, cancellationToken);
return sendTask.ContinueWith(
task => { // do some sync work afterwards here });
}
हालांकि, अब मुझे एक प्रतिनिधि हैंडलर के भीतर से आईओ बाध्य संचालन को कॉल करने की आवश्यकता है। आईओ बाध्य ऑपरेशन पहले से ही Task<bool>
के रूप में लपेटा गया है। मुझे यह निर्धारित करने के लिए परिणाम का उपयोग करने की आवश्यकता है कि आंतरिक हैंडलर पर जारी रहना है या नहीं।
एक उदाहरण अनुरोध को अधिकृत करने के लिए नेटवर्क कॉल करेगा। मुझे मौजूदा सिस्टम के साथ एकीकृत करने के लिए ऐसा करना है। आम तौर पर, मुझे लगता है कि इस समस्या के लिए वैध परिदृश्य हैं, और इसमें एक व्यावहारिक समाधान होना चाहिए।
इस मामले में SendAsync को कार्यान्वित करने का सही तरीका क्या है, ताकि मैं आईओ बाध्य कार्य को असीमित रूप से निष्पादित कर सकूं और फिर असीमित रूप से आंतरिक हैंडलर निष्पादित करना जारी रखूं?
मुख्य बिंदु यह है कि मैं निश्चित होना चाहता हूं कि अनुरोध थ्रेड किसी भी बिंदु पर अवरुद्ध नहीं छोड़ा गया है।
आप 'Authorize' कैसे लागू किया था? क्या आपने एक नया 'HttpClient' instanciated किया था? – JobaDiniz
प्राधिकरण का कार्यान्वयन यहां प्रासंगिक नहीं है - यह केवल एक असीमित कार्य है जो यह निर्धारित करता है कि अनुरोध की अनुमति है या नहीं - आप इसे कैसे लागू करते हैं, यह आपके ऊपर है।उदाहरण के लिए, एक डेटाबेस जांच कर सकता है यह देखने के लिए कि वर्तमान उपयोगकर्ता के पास कुछ bespoke व्यवसाय नियमों के आधार पर वर्तमान अनुरोध करने के लिए उपयोग है या नहीं। –
मैं बस सोच रहा था कि क्या आप एक और http अनुरोध करते हैं, यह सब कुछ है ... मेरे परिदृश्य में मुझे वर्तमान में एक और http कॉल करने की आवश्यकता है, और मुझे एक और 'HttpClient' instanciated है। मैं सोच रहा था कि क्या मैं हैंडलर के अंदर मौजूदा एक का पुन: उपयोग कर सकता हूं, लेकिन ऐसा लगता है कि मैं – JobaDiniz