Asmx-web-service die Rückgabe von xml statt json, Versuchen zu entfernen <string xmlns="http://tempuri.org/"> aus service-Ausgabe

Ich gesucht habe 100 von links für die letzten 3 Stunden zB hinzufügen scriptfactory zu webconfig, 3 Fehler, Einstellung, Inhalt, Art etc.

Ich bin nicht in der Lage, herauszufinden, was eigentlich der Fehler ist.

Umgebung:
Dienst auf .net 4.0
Web-Anwendung läuft .net 4.0

Anforderungen:
Ich brauche zu binden, jqGrid mit asmx-web-service, der ist wieder in mich ein json als string.
Web-service-Datei enthält folgenden code.

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class SampleService : System.Web.Services.WebService
{
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string GetJsonServerProcess()
    {
        int memory = 1;
        string json = string.Empty;
        var obj = (System.Diagnostics.Process.GetProcesses().Where(r => r.WorkingSet64 > memory).Select(p => new { p.ProcessName, p.WorkingSet64 }).ToArray());
        json = Lib.ToJSON(obj);
        return json;
    }
}

Javascript ist wie folgt

<script type="text/javascript">
    $(document).ready(function () {
        jQuery("#jqgajax").jqGrid({
            ajaxGridOptions: { type: "POST", contentType: 'application/json; charset=utf-8'  },
            url:'http://localhost:1092/SampleService.asmx/GetJsonServerProcess',
            datatype: "json",
            data: "{}",
            colNames: ['ProcessName', 'WorkingSet64'],
            colModel: [
                        { name: 'ProcessName', index: 'ProcessName', width: 55 },
                        { name: 'WorkingSet64', index: 'WorkingSet64', width: 90 }
                    ],
            rowNum: 10,
            width: 700,
            rowList: [10, 20, 30],
            sortname: 'invdate',
            viewrecords: true,
            sortorder: "desc",
            caption: "New API Example"
        });
    });
</script>

HTML ist wie folgt

<table id="jqgajax">
</table>
<div id="jqgajax">
</div>

Web Service-Ausgabe beim Klick auf den button Invoke

<string xmlns="http://tempuri.org/">
[{"ProcessName":"Dropbox","WorkingSet64":22736896},
 {"ProcessName":"fdhost","WorkingSet64":1941504},
 {"ProcessName":"IntelliTrace","WorkingSet64":39276544}
]
</string>

Bitte vorschlagen, was ist es, was mir fehlt.
<string xmlns="http://tempuri.org/"> tags reizt mich. Ich gehe davon aus, dass diese tags sind nicht lassen mein raster binden können.

UPDATE:

ASMX service sieht jetzt aus wie unten.

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class SampleService : System.Web.Services.WebService
{
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public List<demo> GetJsonServerProcess()
    {
        List<demo> test = new List<demo>();

        for(int i=1;i<=10;i++)
            test.Add(new demo { ProcessName = string.Format("Sample {0}",i), WorkingSet64 = i });

        var re = test;
        return re;
    }
}

public class demo
{
    public string ProcessName { get; set; }
    public int WorkingSet64 { get; set; }
}
  • Mögliche Duplikate von:stackoverflow.com/questions/11088294/...
  • Die Fragen sind ähnlich, aber die Lösungen sind unterschiedlich. In der verlinkten Lösung, das zu beheben war das web ändern.config-Datei, in dieser Lösung, die Lösung ist das ändern des Content-Type-header. Sie dürfen sich nicht gegenseitig ausschließen Lösungen obwohl.
Schreibe einen Kommentar