يصل Windows Phone 7 إلى Azure Mobile Service (أرجع الخادم البعيد خطأً:غير معثور عليه)

StackOverflow https://stackoverflow.com//questions/12706698

سؤال

أحاول إنشاء خدمة الهاتف المحمول الجديدة من Azure ، وقد تعرضت JSON البيانات بشكل صحيح.

https://lifehope.azure-mobile.net/tables/USERPF

USERPF هو جدول عينة.

من أجل تبسيط السؤال، قمت للتو بتعديل الإذن إلى "الجميع".

المشكلة هي أن الكود المذكور أدناه لا يعمل.رسالة الخطأ هي: أرجع الخادم البعيد خطأً:غير معثور عليهعندما قمت بالضغط على الزر "إدراج" لإدراج سجل جديد في USERPF...

    private void butInsert_Click(object sender, RoutedEventArgs e)
    {
        USERPF item = new USERPF();
        item.Column1 = 789;
        item.Column2 = 789;

        WebClient wc = new WebClient();
        wc.Headers["Content-Type"] = "application/x-www-form-urlencoded";
        //wc.Headers["X-ZUMO-APPLICATION"] = "";
        wc.UploadStringCompleted += (ss, arg) =>
        {
            if (arg.Error == null)
            {
                MessageBox.Show("OK");
            }
            else
            {
                MessageBox.Show(arg.Error.Message);
            }
        };

        wc.UploadStringAsync(
            new Uri("https://lifehope.azure-mobile.net/tables/USERPF/"),
            "POST", JsonHelper.ObjectToJson(item, typeof(USERPF)));
    }

//USERPF.cs

public class USERPF
{
    [System.Runtime.Serialization.IgnoreDataMember()]
    public int id { get; set; }
    [System.Runtime.Serialization.DataMember()]
    public int Column1 { get; set; }
    [System.Runtime.Serialization.DataMember()]
    public int Column2 { get; set; }
}

//JsonHelper.cs

    public static string ObjectToJson(object obj, Type type)
    {
        try
        {
            //Create a stream to serialize the object to.
            MemoryStream ms = new MemoryStream();

            // Serializer the User object to the stream.
            DataContractJsonSerializer ser = new DataContractJsonSerializer(type);
            ser.WriteObject(ms, obj);
            byte[] json = ms.ToArray();
            ms.Close();
            return Encoding.UTF8.GetString(json, 0, json.Length);
        }
        catch (Exception ex)
        {
           MessageBox.Show(ex.Message);
            return string.Empty;
        }
    }
هل كانت مفيدة؟

المحلول

أنت ترسل بيانات JSON، لكنك تقول إنها من نوع محتوى مختلف:

wc.Headers["Content-Type"] = "application/x-www-form-urlencoded"; 

قم بتعيين نوع المحتوى الصحيح في الطلب:

wc.Headers["Content-Type"] = "application/json"; 

شيء لا علاقة له:إذا لم يكن النوع الخاص بك مزخرفًا [DataContract], ، لا تحتاج إلى تزيين الخصائص Column1 وColumn2 بها [DataMember].

نصائح أخرى

حاول أن يلقي arg.Erroص ل WebException, ، وتحقق من رمز Statuce.قد يكون 401 (غير مصرح به)

 var webException = arg.Error as WebException;
 if(webException == null) return;


   if (webException.Response != null)
   { 
     var response = (HttpWebResponse)webException.Response; 
     var status  = response.StatusCode; //press F9 here
   }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top