3
Answers

Error in deserialising WCF json object C#

I have developed an application (C# MVC web and C# Desktop application) that communicates with database using WCF service.

It’s currently hosted at several locations, and is working fine. Except at one location, I’m facing issue with deserialisation of JSON object in one of the service method, only when calling through desktop application.

Error getting When deserialization : “There was an error deserializing the object of type System.Collections.Generic.List`1[Namespace.ModelClassName, Namespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]. Encountered unexpected character ':'.”

Deserialize Method Currently Using:

Try

var url = BaseServiceURL + "wsModel.svc/ ModelDynamicSearch " + "/" + ModelID.ToString() + "/" + SearchText.ToString() + "/" + SearchType.ToString();

var request = (HttpWebRequest)WebRequest.Create(url);

request.Method = "GET";

var response = (HttpWebResponse)request.GetResponse();

List<ModelName> lstVisitors = new List<ModelName>();

var t = new DataContractJsonSerializer(typeof(List<ModelName>));

using (var responseStream = response.GetResponseStream())

{

lstVisitors = (List<ModelName>)t.ReadObject(responseStream);

}

Catch

Error Getting

Finally

Service Contact:

[OperationContract]

[WebGet(UriTemplate = "ModelDynamicSearch/{ModelID}/{SearchText}/{SearchType}", ResponseFormat = WebMessageFormat.Json)]

List<ModelName> ModelDynamicSearch(string ModelID, string SearchText, string SearchType);

Model Definition:

public class ModelName

{

[DataMember]

public int ModelID { get; set; }

[DataMember]

public int ModelCompanyID { get; set; }

[DataMember]

public string ModelName { get; set; }

}

Answers (3)

0
Photo of Dinesh Ambaliya
NA 42 59.8k 11y
Thanks you for your code and also I found useful Net.NetworkInformation namespace and its classes for my application. Thanks!
0
Photo of Pankaj Pandey
NA 6.3k 1.1m 11y
hello


you can try it



 Uri URL = new Uri("http://sixhoej.net/speedtest/1024kb.txt");
        WebClient wc = new WebClient();
        double starttime = Environment.TickCount;

        // download file from the specified URL, and save it to C:\speedtest.txt
        wc.DownloadFile(URL, @"C:\speedtest.txt");

        // get current tickcount
        double endtime = Environment.TickCount;

        // how many seconds did it take?
        // we are calculating this by subtracting starttime from endtime
        // and dividing by 1000 (since the tickcount is in miliseconds.. 1000 ms = 1 sec)
        double secs = Math.Floor(endtime - starttime) / 1000;

        // round the number of secs and remove the decimal point
        double secs2 = Math.Round(secs, 0);

        // calculate download rate in kb per sec.
        // this is done by dividing 1024 by the number of seconds it
        // took to download the file (1024 bytes = 1 kilobyte)
        double kbsec = Math.Round(1024 / secs);
        Label1.Text = "Download rate: " + kbsec + " kb/sec";
        try
        {
            // delete downloaded file
            System.IO.File.Delete(@"C:\speedtest.txt");
            Console.WriteLine("Done.");
        }
        catch
        {
            Console.WriteLine("Couldn't delete download file.");
            Console.WriteLine("To delete the file yourself, go to your C-drive and look for the file 'speedtest.txt'.");
            Console.ReadKey();
        }