c# ويندوز فون 8 هتبكلينت الحصول على طريقة إرجاع نتائج غريبة




windows-phone-8 (2)

كما علق بالفعل، انها مشكلة التخزين المؤقت (يتحدث ببساطة: يتم تخزين طلبك مؤقتا، حتى تحصل على الاستجابة المخزنة مؤقتا). الجواب أليكسي هو على الارجح الأكثر استخداما، وخاصة باستخدام الوقت الحالي كمعلمة الاستعلام.

ملاحظة: الرجال، يرجى الإجابة، وليس التعليق، وإلا فإن السؤال سيبقى في حالة "دون رد".

أنا على تطوير ويندوز فون 8 التطبيق الذي يرسل بعض البيانات إلى الخادم الذي ينفذه ويعود نتيجة. يمكن الاستعلام عن الخادم في أي وقت للحصول على حالة التنفيذ الحالي الذي يمكن أن يكون التهيئة، تشغيل أو الانتهاء. الإخراج متاح فقط عندما يكون التنفيذ في حالة الانتهاء. المستخدم لديه الخيار للتحقق من الوضع الحالي للتنفيذ، عن طريق الضغط على زر 'تحديث'

XAML

<Button Background="{StaticResource PhoneAccentBrush}" 
        Click="UpdateRunInfo" > Update info</Button>

هذه هي الطريقة

private async void UpdateRunInfo(object sender, RoutedEventArgs e)
    {
        ExecutionItem clicked = ((sender as Button).DataContext as ExecutionItem);
        HttpClientHandler handler = new HttpClientHandler();
        handler.Credentials = new NetworkCredential("username", "password");           
        HttpClient client = new HttpClient(handler);                    
        string Url = "http://somefakeurl.com/server/run/id/status";
        string _status = await client.GetStringAsync(Url);
        clicked.status = _status;
                }

لذا فإن المشكلة هي أن هذه الطريقة تعمل بشكل صحيح فقط في المرة الأولى التي يطلق عليها. بعد ذلك، جيتسترينغاسينك () بإرجاع نفس نتائج المكالمة الأولى بغض النظر عن الحالة الفعلية للخادم.

لقد حاولت هذه الطريقة في مشروع ويندوز فون منفصل، والنتيجة هي نفسها. للتأكد من أن الخادم يعمل بشكل صحيح حاولت مرة أخرى نفس رمز C # هذه المرة على تطبيق سطح المكتب وأنها تعمل بشكل جيد تماما.

نظريتي هي أنه لأنني أرسل نفس الطلب عدة مرات في نظام التشغيل وب هو التخزين المؤقت النتيجة الأخيرة ويعطيها مرة أخرى لي بدلا من فعليا جعل طلب جيت إلى الملقم.

لماذا يقوم هتكلينت بإرجاع حالة التخزين المؤقت بدلا من الحصول على الحالة من الخادم بالفعل؟


كما اقترح من قبل الناس التعليق كان مشكلة التخزين المؤقت. الاقتراح من المستخدم لب تعيين client.DefaultRequestHeaders.IfModifiedSince حل المشكلة





windows-phone-8