c# - تاريخ النشرالوقت إلى أبيكونترولر في أسب مفك 4(بيتا)




asp.net-mvc httpclient (3)

هذا هو علة معروفة مع أسب مفك 4 بيتا والنسخة النهائية من أسب مفك 4 سوف تستخدم Json.net كمسلسل جسون حتى ذلك الحين يمكنك استخدام المسلسل الافتراضي الافتراضي أو تبديل الافتراضي جسون المسلسل ل Json.net . مزيد من المعلومات يمكن العثور على بلوق هانزلمان

فيما يلي مثال صغير على استخدام تسلسل شمل الافتراضي لإرسال داتيتيم مع هتبكلينت:

var service = new HttpClient();
service.BaseAddress = url;

var mediaType = new MediaTypeHeaderValue("application/xml");
XmlMediaTypeFormatter formater = new XmlMediaTypeFormatter();
var req = new HttpRequestMessage<T>(item, mediaType, new MediaTypeFormatter[] { formater });

service.PutAsync(method, req.Content);

ولكن إذا كنت ترغب في استخدام جسون ثم هنا هو مشاركة بلوق جيدة على استخدام JSON.NET مع ASP.NET أبي ويب

عند نشر كائن جسون مع خاصية تاريخ إلى أبيكونترولر فإنه لن ديسيرياليز في تاريخ.

رمز موقع الخادم:

public class MegaTestController : ApiController
{
    // POST /megatest
    public void Post(ttt value)
    {
        string sdf = "!sad";
    }
}

public class ttt
{
    public DateTime Date { get; set; }
    public string Name { get; set; }
}

ثم أفعل طلب بوست مع فيدلر

بوست هتب: // لوكالهوست: 62990 / ميغاتيست هتب / 1.1

وسر-إدجنت: فيدلر

المضيف: لوكالهوست: 62990

نوع المحتوى: تكست / جسون

كونتنت-لينغث: 54

{"ديت": "/ ديت (1239018869048) /"، "نيم": "ديود"}

ولكن الكائن الذي يأتي في مجموعة خصائص Name فقط، الخاصية Date هو {01.01.0001 00:00:00}

هل أنا في عداد المفقودين أي رؤوس أو إعدادات المشروع؟

تحرير : طلبات تأتي في الواقع من HttpClient . هل يمكن تنسيق التاريخ قبل إرسال الطلب عبر HttpClient ؟

public Task<T> Create<T>(T item)
{
    var service = new HttpClient();
    service.BaseAddress = new Uri("http://localhost:62990");

    var method = typeof(T).Name + "s"; // in this case it will be ttts

    var req = new HttpRequestMessage<T>(item);
    req.Content.Headers.ContentType = new MediaTypeHeaderValue("text/json");

    return service.PostAsync(method, req.Content).ContinueWith((reslutTask) =>
    {
        return reslutTask.Result.Content.ReadAsAsync<T>();
    }).Unwrap();
}

var data = new ttt { Name = "Dude", Date = DateTime.Now };
Create(data);

تحرير : هذا هو علة معروفة مع أسب مفك 4 بيتا والنسخة النهائية من أسب مفك 4 سوف تستخدم Json.net كمسلسل جسون حتى ذلك الحين يمكنك استخدام المتسلسل شمل الافتراضي أو تبديل الافتراضي جسون المسلسل ل Json.net . مزيد من المعلومات يمكن العثور على بلوق هانزلمان


حاول نشر التاريخ / الوقت ك "يي-مم-د ه: مم: سس". سوف أسب مفك التعامل معها بشكل صحيح.


يستخدم ASP.Net ويب أبي DataContractJsonSerializer الذي يحتوي على أخطاء المحيطة تسلسل DateTime . يجب استخدام JSON.Net بدلا من ذلك، وتنفيذ ميدياتيبورماتر يستخدم JSON.Net بدلا من داتاكونتراكتسونسرياليزر. راجع إجابتي عن سؤال مماثل هنا .







asp.net-web-api