2011-01-02 3 views
5

Possiedo un servizio Web ASP.NET (.asmx). Il mio servizio è definita come la seguente:ASMX Restituzione di una stringa 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; 
    } 
} 

Attualmente, se io chiamo questo metodo di servizio, ottengo il seguente risultato:

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

Il mio problema è che ho bisogno di tornare solo la parte della stringa. NON voglio restituire il wrapping XML. Come faccio a farlo con un .asmx?

Grazie!

risposta

4

Per questo deve essere un servizio Web .asmx? Voglio dire, escludendo la busta SOAP si sta essenzialmente dicendo "questo non è un servizio web SOAP" così com'è, quindi perché non fare un ulteriore passo avanti e renderlo una normale pagina .aspx invece di un servizio web.

Come pagina, quello che stai cercando di fare sarebbe banale. Rimuovere tutti i ricarichi dalla pagina, utilizzare Response.Headers per modificare le intestazioni di risposta di conseguenza, Response.Write() per l'output del testo non elaborato e Response.End() per chiudere la risposta.

+0

Genius. Questo è quello che stavo cercando – user208662

+0

@ user208662: Ora mi trovo a chiedermi se la stessa cosa può essere ottenuta con un metodo web '.asmx'. Una parte di me ne dubita, ma una parte di me no. La prossima volta che mi trovo di fronte al mio ambiente di sviluppo dovrò testarlo e vedere cosa posso inventare. – David

+1

@user: tu dovrebbe creare un gestore ASHX, non una pagina ASPX. Non è necessario il sovraccarico di ASPX. – SLaks

2

Usa JSON

aggiungere l'attributo necessario per il servizio web e il metodo di web e si ottiene ciò che si vuole.

Web attributo del servizio: Metodo [ScriptService]

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

Leggi un campione Here

+0

Sfortunatamente, questo approccio non funziona :(. Ricevo ancora la risposta in XML. Sembra strano, mi aspetterei che venga incapsulato in Json. Altre idee? – user208662

+0

Perché? Vedere il risultato dell'esempio in esecuzione, http: //www.williamsportwebdeveloper.com/BookQuery.html –

+1

Dave Ward ha un grande post su questo: http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/ – chprpipr

0

Perché si vuole sbarazzarsi della parte XML? Il codice generato dal proxy richiede un formato comune in modo che possa comprendere e leggere i dati restituiti. Stripping dell'XML rende essenzialmente i dati di ritorno illeggibili dal proxy client.