سؤال

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

لا parameterless منشئ تحديد نوع 'System.سلسلة'.

النظام.MissingMethodException في النظام.ويب.البرنامج النصي.التسلسل.ObjectConverter.ConvertDictionaryToObject(يقع2 dictionary, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject) at system.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject) at system.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject) at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToType(Object o, Type type, JavaScriptSerializer serializer) at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary2 rawParams) في النظام.ويب.البرنامج النصي.الخدمات.WebServiceMethodData.CallMethodFromRawParams(كائن الهدف يقع2 parameters) at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary2 rawParams) في النظام.ويب.البرنامج النصي.الخدمات.RestHandler.ExecuteWebServiceCall(HttpContext السياق ، WebServiceMethodData methodData)

الافتراضي.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
    <script src="http://www.json.org/json2.js" type="text/javascript"></script>
    <script src="http://code.jquery.com/jquery-latest.pack.js" type="text/javascript" ></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $.theDate = {};
            $("#Button1").click(function(){
                $.ajax({
                    type: 'POST',
                    url: 'default.aspx/getDate',
                    data: '{}',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function(json){
                        var date = eval("("+json.d+")");
                        $.theDate = date;
                        var pdate = eval("("+json.d.replace(/"\\\/Date\(([0-9]+)[0-9-]+\)\\\/"/gi, 'new Date(parseInt($1,10))')+")");
                        $("#now").val(date.now);
                        $("#pnow").val(pdate.now);
                        $("#strnow").val(date.strnow);
                    },
                    error: function(xmlhr, status, err){
                        console.error(arguments);
                        var response = eval("("+xmlhr.responseText+")");
                        console.log(response);
                    }
                });
            });

            $("#Button2").click(function(){
                var json = JSON.stringify($.theDate);
                json = '{"json":'+json+'}';
                $.ajax({
                    type:'POST',
                    url:'default.aspx/deserialize',
                    data: json,
                    contentType:'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function(json){
                        var date = eval("("+json.d+")");
                        console.log(date);
                    },
                    error: function(xmlhr, status, err){
                        console.error(arguments);
                        var response = eval("("+xmlhr.responseText+")");
                        console.log(response);
                    }
                });
            });
        });
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input id="Button1" type="button" value="Get Date" /><br />
        date.now: <input type="text" id="now" value="" style="width:20em" /><br />
        date.now processed: <input type="text" id="pnow" value="" style="width:30em"><br />
        date.strnow: <input type="text" id="strnow" value=""  style="width:20em"/>
        <input id="Button2" type="button" value="Send Date" /><br />
    </div>
    </form>
</body>
</html>

الافتراضي.aspx.vb

Imports System.Web.Services
Imports Newtonsoft.Json

Partial Class _Default
    Inherits System.Web.UI.Page

    Private Class _date
        <JsonProperty()> Public now As New Date
        <JsonProperty()> Public strnow As String
        Public Sub New()
            now = Date.Today
            strnow = Date.Today.ToLongDateString
        End Sub
    End Class

    <WebMethod()> Public Shared Function getDate() As String
        Dim theDate As New _date
        Dim strJson As String

        strJson = JsonConvert.SerializeObject(theDate)

        Return strJson
    End Function

    <WebMethod()> Public Shared Function deserialize(ByVal json As String) As String
        Dim newDate As _date
        Try
            newDate = JsonConvert.DeserializeObject(json, GetType(_date))
            Return "{""done"":true}"
        Catch ex As Exception
            Throw ex
        End Try
    End Function
End Class

فما استقاموا لكم فاستقيموا نقدر نساعد على ما أفعله خطأ هنا.شكرا مقدما.

هل كانت مفيدة؟

المحلول

اضطر إلى تغيير

Private Class _date 

إلى

Public Class _date

و

<WebMethod()> Public Shared Function deserialize(ByVal json As String) As String

إلى

<WebMethod()> Public Shared Function deserialize(ByVal json As _date) As String
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top