2011-01-02 13 views
5

Mam usługę sieci Web ASP.NET (.asmx). Moje usługi są zdefiniowane w następujący sposób:ASMX Zwracanie czystego łańcucha

[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; 
    } 
} 

Obecnie, jeśli zgłoszę tę metodę usługi, pojawia się następujący wynik:

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

Mój problem jest, muszę zwrócić tylko część ciągu. NIE chcę zwracać zawijania XML. Jak mam to zrobić z .asmx?

Dzięki!

Odpowiedz

4

Czy musi to być usługa internetowa o numerze .asmx? Mam na myśli to, że wykluczając kopertę SOAP zasadniczo mówisz "to nie jest usługa sieciowa SOAP", więc dlaczego nie pójść o krok dalej i uczynić ją regularną stroną .aspx zamiast usługi internetowej .asmx.

Jako strona, to, co próbujesz zrobić, byłoby banalne. Usuń wszystkie znaczniki ze strony, użyj Response.Headers, aby odpowiednio zmodyfikować nagłówki odpowiedzi, Response.Write(), aby wyprowadzić tekst nieprzetworzony, i Response.End(), aby zamknąć odpowiedź.

+0

Geniusz, tego właśnie szukałem – user208662

+0

@ user208662: Teraz zastanawiam się, czy to samo można osiągnąć w metodzie internetowej ".asmx". Część mnie wątpi, ale część mnie nie. Następnym razem, gdy znajdę się przed moim środowiskiem programistycznym, będę musiał przetestować to i zobaczyć, co mogę wymyślić. – David

+1

@user: Ty powinien wykonać handler ASHX, a nie stronę ASPX. Nie potrzebujesz nakładki ASPX. – SLaks

2

Zastosowanie json

dodać wymagany atrybut do usługi internetowej i Twojego sposobu internetowej i masz co chcesz.

Web Service Atrybut: Metoda [ScriptService]

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

Czytaj próbkę Here

+0

Niestety, to podejście nie działa :(Nadal dostaję odpowiedź w XML Wydaje się dziwne.Miałem oczekiwać, że jest zapakowane w Json.Inne pomysły? – user208662

+0

Dlaczego? Zobacz wynik działania przykładu, http: //www.williamsportwebdeveloper.com/BookQuery.html –

+1

Dave Ward ma świetny post na ten temat: http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/ – chprpipr

0

Dlaczego chcesz się pozbyć części XML? Kod generowany przez serwer proxy wymaga wspólnego formatu, aby mógł zrozumieć i odczytać dane, które są zwracane. Usunięcie XML w znacznym stopniu uniemożliwia odczytanie danych zwracanych przez serwer proxy klienta.

Powiązane problemy