Avatar billede hoopmaster Nybegynder
28. september 2010 - 09:09 Der er 14 kommentarer og
1 løsning

Responce. problem - asp.net

Hej eksperter

Jeg har en simpel metode:
        public void DisplayMessage(string Msg) {
            Response.Clear();
            Response.ClearContent();
            Response.ClearHeaders();

            Response.ContentType = "text/plain";

            Response.Write(Msg);
            Response.End();
        }


Som jeg giver denne textstreng:
output.DisplayMessage("" + dim + " - " + met);

Som giver denne exception:
Httpexception was unhandled by user code:

Tror mit problem er at den aspx side som jeg kører metoden på ikke bliver åbnet, og det skal den sådan set heller ikke. Den skal bare holde på det plain text jeg responce.writer til den...

Nogen ideer?
Avatar billede aaberg Nybegynder
28. september 2010 - 09:17 #1
Jeg ville nok have brugt en Generic Handler (ashx) i stedet for en aspx side. Generic handlers er lavet for denne type oppgaver.

Men ellers så burde det kunne lade sig gøre, det du prøver på. Hvor kalder du DisplayMessage() fra? Og får du noget mere information i fejlmeddelelsen?
Avatar billede hoopmaster Nybegynder
28. september 2010 - 09:35 #2
Den siger også: svaret er ikke tilgængeligt i denne kontekst

Display message bliver kaldt fra pageload fra startsiden...

Kunne være en mulighed, men vil gerne ændre så lidt som muligt da det er en refaktorisering af noget kode som er skrevet sidste år.
Avatar billede aaberg Nybegynder
28. september 2010 - 09:43 #3
På hvilken linje i koden opstår fejlen?
Avatar billede hoopmaster Nybegynder
28. september 2010 - 09:46 #4
den første i displaymessage metoden... uanset hvad der står først...
Avatar billede aaberg Nybegynder
28. september 2010 - 10:04 #5
Vent lidt.. Nu læste jeg dit spørgsmål lidt grundigere. Du skriver at aspx siden ikke bliver åpnet. Vil det sige at du ikke prøver at åbne siden i browseren?

Hvis jeg har forstået det rigtig, kan det ikke lade sig gøre, da Response (Svaret) ikke bliver initialiseret med mindre du prøver at åbne siden via en browser.

Kan du komme med en lidt bedre beskrivelse af, hvad det er du prøver at opnå med dette. Måske jeg kan komme på en alternativ løsning.
Avatar billede hoopmaster Nybegynder
28. september 2010 - 10:10 #6
ok.. Brugeren skal ikke "opdage" at der sker noget bag facaden, nemlig at jeg skriver noget tekst til en aspx side som jeg så bruger til at vise en graf(som brugeren kommer til at se på den side han er på)

Jeg vil bare bruge aspx siden til at midlertidigt at gemme nogle værdier som jeg bruger i min graf.
Avatar billede hoopmaster Nybegynder
28. september 2010 - 10:12 #7
I princippet skal teksten ikke nødvendigvis udskrives når siden vises, men bare gemmes i html, som plain tekst - hvis du forstår
Avatar billede aaberg Nybegynder
28. september 2010 - 11:21 #8
Det eneste du kan bruge Response til, er at skrive til webbrowseren.

Når du skriver at du midlertiddig skal gemme teksten, mener du da midlertiddig over flere postbacks? Da kan du bruge en ViewState variabel eller en Session variable.

At bruge Response fra en side der ikke skal renderes, giver desværre ingen mening.
Avatar billede hoopmaster Nybegynder
28. september 2010 - 13:06 #9
Ok..

Ja den skal gemme midlertidig over flere postbacks....

Er sådan set ligemeget hvordan jeg gør det, skal bare kunne skrive til en plain tekst på apsx filen. Sådan at det eneste som befinder sig i aspx er det jeg siger skal være der...
Avatar billede aaberg Nybegynder
28. september 2010 - 14:15 #10
Ikke brug en aspx fil til at gemme noget midlertiddig. Det giver ingen mening. Brug en Session variabel. Denne er til rådighed fra alle dine aspx sider.

Når du skal gemme:
Session["MinVariabel"] = "noget tekst som skal gemmes";

Når du så skal bruge teksten igen:
string text = (string)Session["MinVariabel"];
Avatar billede hoopmaster Nybegynder
29. september 2010 - 08:07 #11
Mit problem er stadig at min flash graf loader en aspx side... kan man loade en session, på samme måde tror du??

Tænkte på om man kunne sige responce.redirect til siden, køre responce.write til den og redirecte tilbage til startsiden, uden at brugeren ser det??
Avatar billede aaberg Nybegynder
29. september 2010 - 08:40 #12
Når du kalder Response.Redirect, så svare det til at brugeren skriver ind en ny url i adressebaren i browseren. Du skifter altså til en ny side. Hvis du da redirecter tilbage igen med det samme, kommer du jo bare tilbage til den originale side. Og siden du redirectede fra, er væk.

For mig at se, får du ikke noget ud af det. Men det kan selvfølgelig godt være det er fordi jeg ikke forstår den her flash graf du bruger.

Hvis flash grafen skal hente data fra en aspx side, via en url du angiver, så skal du ikke tænke på at redirecte noget overhovedet. Bare lad flash grafen selv hente aspx siden, og læse data. Siden som brugeren ser, skal du ikke ændre på.
Avatar billede aaberg Nybegynder
29. september 2010 - 08:43 #13
Hvis du stadig får samme exception, så prøv at åbne siden med data i browseren, for at teste om det virker. Jeg lavede en lille testside med koden fra dit spørgsmål, og det virket helt fint hos mig.
Avatar billede hoopmaster Nybegynder
29. september 2010 - 20:39 #14
Jeg har prøvet at lave en test side, med hardcoded data som min flash graf sagtens kan loade og vise... Hvilket også fungerer fint for mig.

problemet er når jeg skal skrive data til aspx siden ikke når jeg loader den... Men må prøve at kigge mere på det imorgen..
Avatar billede hoopmaster Nybegynder
05. oktober 2010 - 09:55 #15
Fik det til at fungere med en at gemme en aspx site, som min flash kan vise - takker for dine input... lukker tråden
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