He estado buscando 100 enlaces durante las últimas 3 horas, por ejemplo, agregando scriptfactory a webconfig , 3 errores, fijando el tipo de contenido, etc.Servicio web de Asmx que devuelve xml en lugar de json, intentando eliminar <string xmlns = "http://tempuri.org/"> del resultado del servicio
no soy capaz de averiguar lo que realmente es el error.
Medio Ambiente: servicio que se ejecuta en .NET 4.0 aplicación Web que se ejecuta en .NET 4.0
Requisitos: que necesitan de obligar a un servicio web con jqGrid asmx que me está volviendo un JSON como una cadena. archivo de servicio de Internet contiene siguiente código.
[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 es el siguiente
<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 es el siguiente
<table id="jqgajax">
</table>
<div id="jqgajax">
</div>
salida de servicio Web al hacer clic en el botón de invocación
<string xmlns="http://tempuri.org/">
[{"ProcessName":"Dropbox","WorkingSet64":22736896},
{"ProcessName":"fdhost","WorkingSet64":1941504},
{"ProcessName":"IntelliTrace","WorkingSet64":39276544}
]
</string>
Por favor sugiera qué es lo que me falta. <string xmlns="http://tempuri.org/">
etiquetas mí son irritantes. Estoy asumiendo que estas etiquetas no están dejando que mi rejilla capaz de unirse.
ACTUALIZACIÓN:
servicio ASMX ahora se ve como la siguiente manera.
[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; }
}
Posible duplicado: http: //stackoverflow.com/questions/11088294/asp-net-asmx-web-service-returning-xml-instead-of-json –
Las preguntas son similares pero las soluciones son diferentes. En la solución vinculada, la solución era modificar el archivo web.config, en esta solución, la solución consiste en modificar el encabezado Content-Type. Sin embargo, puede que no sean soluciones mutuamente excluyentes. – akousmata