2011-01-02 13 views
5

Tengo un servicio web ASP.NET (.asmx). Mi servicio se define como la siguiente:ASMX Devolver una cadena pura

[System.Web.Services.WebService(Namespace = "http://tempuri.org/")] 
[System.Web.Services.WebServiceBinding(ConformsTo = System.Web.Services.WsiProfiles.BasicProfile1_1)] 
public class MyService : System.Web.Services.WebService 
{ 
    [System.Web.Services.WebMethod] 
    public string GetResult() 
    { 
    string result = ""; 

    int day = System.DateTime.UtcNow.Day; 
    if ((day % 1) == 1) 
     result = "odd"; 
    else 
     result = "even"; 
    return result; 
    } 
} 

Actualmente, si llamo a este método de servicio, me sale el siguiente resultado:

<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://tempuri.org/">even</string> 

Mi problema es que necesito para volver sólo la parte de la cadena. NO quiero devolver el XML de envoltura. ¿Cómo hago esto con un .asmx?

Gracias!

Respuesta

4

¿Tiene que ser un servicio web .asmx para esto? Quiero decir que al excluir el sobre SOAP básicamente dices "esto no es un servicio web SOAP" tal como está, así que ¿por qué no dar un paso más y convertirlo en una página normal .aspx en lugar de un servicio web .asmx?

Como página, lo que estás tratando de hacer sería trivial. Elimine todo el marcado de la página, use Response.Headers para editar los encabezados de respuesta en consecuencia, Response.Write() para dar salida al texto sin procesar, y Response.End() para cerrar la respuesta.

+0

Genius. Eso es lo que estaba buscando. – user208662

+0

@ user208662: Ahora me pregunto si se puede lograr lo mismo en un método web '.asmx'. Parte de mí lo duda, pero parte de mí no. La próxima vez que me encuentre frente a mi entorno de desarrollo, voy a tener que probarlo y ver qué puedo hacer. – David

+1

@user: You debe hacer un controlador ASHX, no una página ASPX. No necesita la sobrecarga de ASPX. – SLaks

2

Uso JSON

añadir el atributo requerido para el servicio web y su método de web y se obtiene lo que quiere.

servicio web Atributo: Método [ScriptService]

Web Atributo: [ScriptMethod(ResponseFormat = ResponseFormat.Json)]

Leer una muestra Here

+0

Desafortunadamente, ese enfoque no funciona :(. Todavía recibo la respuesta en XML. Parece extraño. Esperaría que estuviese empaquetado en Json. ¿Otras ideas? – user208662

+0

¿Por qué? Vea el resultado del ejemplo en ejecución, http: //www.williamsportwebdeveloper.com/BookQuery.html –

+1

Dave Ward tiene una gran publicación sobre esto: http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/ – chprpipr

0

¿Por qué quiere deshacerse de la parte XML? El código que genera el proxy necesita un formato común para que pueda comprender y leer los datos que se devuelven. La eliminación del XML esencialmente hace que los datos de retorno sean ilegibles para el proxy del cliente.

Cuestiones relacionadas