WP8 - एकाधिक समवर्ती वेब क्लाइंट कॉल

मैं अपने विंडोज फोन 8 ऐप के लिए ऑनलाइन रीस्टफुल-सोर्स से डेटा डाउनलोड करने की कोशिश कर रहा हूं। कुल 700 कॉल हैं, प्रत्येक एक चरम लंबाई की एक जेसन-स्ट्रिंग डाउनलोड कर रहा है। मैं TargetInvocationExceptions में चल रहा हूं जो मुझे बता रहा है कि लगभग 65-80 कॉल के बाद एक HTTP त्रुटि 404 हुई (प्रत्येक बाद की कॉल इस अपवाद को फेंकता है), लेकिन केवल तभी जब मैं अपने लूप के अंदर DownloadStringAsync मेथन को कॉल करता हूं। जेसन-डेटा प्रत्येक को डाउनलोड करके स्वयं बेकार ढंग से काम करता है, इसलिए ऑनलाइन स्रोत उपलब्ध है और सामग्री को संभालने के लिए बहुत बड़ी नहीं है। मुझे लगता है कि मुझे निष्पादन समय के साथ समस्या हो रही है, लेकिन मुझे अब तक इस तरह से कोई रास्ता नहीं मिला है और यह अभी भी एक अनुमान है। यहां किसी भी सुझाव के लिए खोलें।

यह मेरा कोड है (MainPage.xaml.cs):

namespace MyApp
{

    static MyViewModel ViewModel;

    public MainPage()
    {
        InitializeComponent();
        ViewModel = new MyViewModel();
        this.DataContext = ViewModel;
        GetData();
    }

    void GetData()
    {
        int id = 1;

        while (id <= 717)
        {
            GetJson(id++);
        }
    }

    void GetJson(int id)
    {
        string url = Connector.BaseURL + id + "/";
        WebClient client = new WebClient();
        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(AddModelToViewModel);
        client.DownloadStringAsync(new Uri(url));
    }

    void AddModelToViewModel(object sender, DownloadStringCompletedEventArgs e)
    {
        try
        {
            string json = e.Result;

            MyModel Model = JsonConvert.DeserializeObject(json);
            ViewModel.Models.Add(Model);
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.ToString());                
        }
    }
}

मेरा व्यू मॉडेल में केवल एक है

ObservableCollection Models

मेनपेज-व्यू में लिस्ट व्यू से जुड़ा हुआ है

मैं अभी भी विंडोज फोन प्रोग्रामिंग के लिए नया हूँ, इसलिए कृपया खराब शैली क्षमा करें :)

संपादित करें: यह निश्चित रूप से एक बार में बहुत से अनुरोधों की बात है। एक समय में 50 अनुरोधों के भाग में GetData() विधि को विभाजित करना, बिना किसी समस्या के बटन बटन से शुरू होता है। जैसा कि नीचे एक टिप्पणी में कहा गया है, मुझे नहीं लगता कि सर्वर मेरे अनुरोधों को अवरुद्ध करता है। क्या विंडोज फोन के किनारे से कोई सीमा है?

कंसोल कोड जो काम करता है:

    static int count = 0;
    static void Main(string[] args)
    {
        for (int i = 1; i <= 717; i++)
        {
            WebClient client = new WebClient();
            client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DL);
            client.DownloadStringAsync(new Uri(BaseURL + i + "/"));
        }

        Console.ReadKey();
    }

    static void DL(object sender, DownloadStringCompletedEventArgs e)
    {
        Console.WriteLine("#" + ++count + ": " + (e.Error == null ? "No error." : "Error!"));
    }
0
@KooKiz मैंने बस एक ही कोड को कंसोल एप्लिकेशन में लागू करने का प्रयास किया। इस मामले में यह काम करता है, इसलिए सर्वर कई अनुरोधों के साथ ठीक होना चाहिए।
जोड़ा लेखक this.Name, स्रोत
क्या आप सुनिश्चित हैं कि समस्या आपके ऐप से आती है? सर्वर में कुछ प्रकार की एंटी-लीच सुरक्षा हो सकती है, यह पता लगाने के लिए कि आप कम समय में असामान्य रूप से बड़ी संख्या में अनुरोध भेज रहे हैं और अपने अगले अनुरोधों को अवरुद्ध कर रहे हैं
जोड़ा लेखक Kevin Gosse, स्रोत