Avatar billede woodbase Nybegynder
31. august 2010 - 09:30 Der er 3 kommentarer

WebHttp ASP.NET 4.0 - Connection closed med objekter, men virker fint med streng

Hej

Jeg har en lille metode i en web service, der ser sådan her ud:
[code] [WebGet(UriTemplate = "MoviesXML")]
        [OperationContract]
        public XDocument GetMoviesXML()
        {
            XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~/Data/Movies.xml"));
            return doc;
        }[/code]

Når jeg kalder den med min client, så får jeg "The underlying connection was closed: The connection was closed unexpectedly", men hvis jeg laver metoden om til at returnere en streng, så virker det fint?

Klienten ser således ud:
[code]
using (HttpClient client = new HttpClient("http://localhost:9090/WVRServices/"))
            {
                using(HttpResponseMessage msg = client.Get("MoviesXML"))
                {
                    msg.EnsureStatusIsSuccessful();
                    litMovies.Text = msg.Content.ReadAsString().ToString();
                }
            }
[/code]
Avatar billede aaberg Nybegynder
01. september 2010 - 13:50 #1
Alt der sendes via en webservice bliver serialiseret til tekst før det bliver sendt

Jeg tror at grunden til at du ikke kan returnere en instans af klassen XDocument fra en webservice, er at XDocument klassen ikke er serializable.

Dette kan enkelt løses ved at returnere xml'en som tekst (som du også selv har fundet ud af), og så loade den ind i et XDocument igen på klienten.
Avatar billede woodbase Nybegynder
04. september 2010 - 16:19 #2
Ja det er delvist rigtig :-)

Det er helt rigtigt at XDocument IKKE implementere ISerializable - http://msdn.microsoft.com/en-us/library/ms731923.aspx

Problemet ligger så i at man ikke bare lige returnerer en streng - fordi alle tags så konverteres til xml indhold:


<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"><wvru:users xmlns:wvru="http://ns.woodbase.dk/User.xsd"></string>


Hvilket betyder at det ikke kan indlæses, som xml...
Avatar billede woodbase Nybegynder
04. september 2010 - 16:21 #3
argh... forumet oversætter selv....

& lt;wvru:users xmlns:wvru="http://ns.woodbase.dk/User.xsd" & gt;

Sådan ser strengen ud, når den kommer fra webservicen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester