Avatar billede dj_uncas Nybegynder
15. juli 2006 - 00:20 Der er 4 kommentarer og
1 løsning

Response.OutputStream for kort?

Hejsa

Jeg har i forbindelse med noget RSS feed rod brugt XmlTextWriter, som tager en Stream som argument i constructoren. Her har jeg givet Response.OutputStream med, da jeg synes det ville passe meget godt ;-)

Problemet er at den hugger den sidste del af outputtet af! Når jeg debugger i VS 2005 kan jeg se at alle metoder osv. bliver kørt rigtigt, så det er ikke noget jeg har gjort.

Hvis jeg i stedet for en Stream sender Response.Output (TextWriter) med som argument virker det hele fint, og alt bliver renderet!?

Nu tænker jeg så at OutputStream har en eller anden længde, men jeg har ikke kunnet finde noget om det, hverken på MSDN eller Google.

Er det noget du ved noget om?
Avatar billede Slettet bruger
15. juli 2006 - 06:38 #1
Får du kaldt Close og Dispose på din XmlTextWriter of evt. Flush ?

Noget helt andet den "korrekte" løsning er at anvende Response.Output når der er table om Text output så som HTML og XML og bruge Response.OutputStream når der er tale om binære data så som dynamisk genereret grafik eller ligende.

Så et eller andet sted skal du bare bruge Response.Output.
Avatar billede dj_uncas Nybegynder
15. juli 2006 - 13:20 #2
Hvis jeg disposer mit XmlTextWriter objekt bliver alt tekst-indhold vist fint. Der er tilsyneladende ligegyldigt med Close og Flush (men jeg gør det alligevel).

Jeg synes stadig det er mærkeligt at tekst bliver hugget af hvis man ikke disposer objektet - har du en forklaring på det?
Avatar billede snepnet Nybegynder
15. juli 2006 - 14:13 #3
Dispose kalder Close som kalder AutoCompleteAll, som kalder Flush, og flush sørger for at du får det sidste med.
Mvh
Avatar billede Slettet bruger
16. juli 2006 - 07:16 #4
Ved det at du ikke har kaldt dispose på din XmlTextWriter kan den have noget af sine data liggende i en intern buffer som endnu ikke er blevet sendt til den underliggende stream når din side slutter og sender sine data. Det er vigtigt at du på alle objekter som implementerer IDisposable kalder Dispose(), både med hensyn til det problem du har oplevet og så almindelig resource oprydning.

Brug eksempel vis:

using(XmlTextWriter writer = new Xml......) {
// Skriv XML dokument..
}
Avatar billede dj_uncas Nybegynder
16. juli 2006 - 12:39 #5
Dispose metoden er protected på XmlTextWriter så den kan jeg ike kalde, men jeg bruger bare en using() blok.

Og tak for hjælpen :-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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