2013-05-06 10 views
8

मैं सी # 5 async/प्रतीक्षा सुविधाओं का उपयोग कर एक सिग्नल एप्लिकेशन बनाने की कोशिश कर रहा हूं, लेकिन जब भी कोड चलाया जाता है, तो यह एक सिस्टम फेंक देगा। अविश्वसनीय अपवाद अपवाद। समस्या को पुन: उत्पन्न करने के लिए सबसे सरल कोड यहां दिया गया है।सिग्नलआर - हब में एसिंक कार्य कैसे करें?

public class SampleHub : Hub 
{ 
    public Task<string> GetGoogle() 
    { 
     var http = new WebClient(); 
     return http.DownloadStringTaskAsync("http://www.google.com"); 
    } 
} 

अपवाद विवरण:

एक अतुल्यकालिक आपरेशन इस समय प्रारंभ नहीं किया जा सकता है। असीमित संचालन केवल एक एसिंक्रोनस हैंडलर या मॉड्यूल के भीतर या पृष्ठ जीवन चक्र में कुछ घटनाओं के दौरान शुरू किया जा सकता है। यदि कोई पृष्ठ निष्पादित करते समय यह अपवाद हुआ, तो सुनिश्चित करें कि पृष्ठ <% @ पृष्ठ Async = \ "true \"%> चिह्नित है।

स्टैक ट्रेस: ​​

at System.Web.AspNetSynchronizationContext.OperationStarted() 
at System.Net.WebClient.DownloadStringAsync(Uri address, Object userToken) 
at System.Net.WebClient.DownloadStringTaskAsync(Uri address) 
at System.Net.WebClient.DownloadStringTaskAsync(String address) 

ग्राहक पक्ष पर, जावास्क्रिप्ट इस तरह दिखता है।

$.connection.hub.start().done(function() { 
    $('#google').click(function() { 
     var google = sample.server.getGoogle(); 
     console.log(google); 
    }); 
}); 

मैंने क्या गलत किया? क्या कोई कामकाज है? यदि संभव हो तो मैं सी # में एसिंक/प्रतीक्षा पैटर्न से चिपकने के लिए वास्तव में उत्सुक हूं।

+0

क्या आपने विधि नाम से पहले कीवर्ड async जोड़कर GetGoogle विधि async बनाने का प्रयास किया है? –

+0

हां, मैंने कोशिश की है, और यह काम नहीं किया। स्टीफन के जवाब ने अंततः मेरी समस्या हल की। –

उत्तर

10

मैं को HttpClient के साथ बदलने का प्रयास करूंगा। DownloadStringTaskAsync मौजूदा EAP विधियों पर async के लिए "बोल्ट-ऑन" समर्थन का एक प्रकार है, और यह ईएपी विधियों है जो सिग्नलआर पर ऑब्जेक्ट कर रहा है। HttpClient सीधे TAP का उपयोग करता है।

+0

आपको बहुत बहुत धन्यवाद! मैंने उस काम को पाने की कोशिश कर रहे 2 रातों को बिताया, और यह मुझे कभी नहीं मारा कि अच्छा पुराना वेब क्लाइंट अपराधी था। –

संबंधित मुद्दे