Avatar billede soc127754 Nybegynder
01. marts 2006 - 18:06 Der er 9 kommentarer og
1 løsning

Gem indhold af response object

Jeg har en application med nogle uforklarlige problemer blandt brugerne. Jeg gemmer derfor indholdet af alle forms i en fil så jeg kan følge med i hvad de har indtastet osv., men jeg ville også gerne gemme skærmbilledet - dvs. alt hvad der bliver udskrevet med response.write. Er der en metode hertil?
Avatar billede snepnet Nybegynder
01. marts 2006 - 23:27 #1
response.write ?!? - hvad bruger du det til?
mvh
Avatar billede soc127754 Nybegynder
02. marts 2006 - 09:22 #2
Ved det er et levn fra asp-classis. Men ikke desto mindre har jeg et væld af response.writes og jeg vil gerne kunne gemme indholdet på en eller anden måde.
Avatar billede snepnet Nybegynder
10. august 2006 - 21:43 #3
Sorry ... har misset denne.
Er der stadig noget omkring det der er aktuelt?
Mvh
Avatar billede soc127754 Nybegynder
11. august 2006 - 09:50 #4
Hej - ja:-) Hvis du har en løsning?
Avatar billede snepnet Nybegynder
11. august 2006 - 10:51 #5
Jeg sidder lige og kigger på det... Hvad er det egenlig du gerne vil gemme?
Du skriver "alt hvad er udskrevet med response.write", men også at du vil gemme et skærmbillede.
... Kan du ikke opsummere præcist hvad det er du vil gemme?
Mvh
Avatar billede soc127754 Nybegynder
11. august 2006 - 11:25 #6
Jeg har en masse scripts, der med response.write sender en masse ting til browseren/skærmen hos brugeren. Jeg vil gerne logge hele outputtet så jeg kan se det skærmbilleder de ser. Det svarer sådan set til at jeg kunne skrive "response.save" i slutningen af scriptet.
Alternativt kunne jeg opbygge en variabel jeg response.writede til sidst og som jeg også gemte, men sådan er scriptet ikke opbygget og det ville kræve en del at lave det om.
Giver det mening?
Avatar billede snepnet Nybegynder
12. august 2006 - 15:19 #7
Ok .... Det var ikke sådan lige ud af landevejen, men prøv det her:

// du laver et custom module:
using System;
using System.Web;
using AspNetResources.Web;

namespace CustomModules
{
    public class HtmlSaver : IHttpModule
    {
        public void Init (HttpApplication app)
        {
            app.ReleaseRequestState += new EventHandler(InstallResponseFilter);
        }

        private void InstallResponseFilter(object sender, EventArgs e)
        {
            HttpResponse response = HttpContext.Current.Response;
            response.Filter = new ResponseFilter(response.Filter, @"C:\testfiles\htmloutput.html");
        }

        public void Dispose()
        {
        }
    }
}

// og et filter
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Web;

namespace AspNetResources.Web
{
    public class ResponseFilter : Stream
    {
        #region fields
        private Stream m_ResponseStream;
        private long m_Position;       
        private string m_File;
        private StringBuilder m_ResponseHtml;
        #endregion

        #region properties
        public override bool CanRead
        {
            get { return true; }
        }

        public override bool CanSeek
        {
            get { return true; }
        }

        public override bool CanWrite
        {
            get { return true; }
        }

        public override void Flush()
        {
            m_ResponseStream.Flush();
        }

        public override long Length
        {
            get { return 0; }
        }

        public override long Position
        {
            get { return m_Position; }
            set { m_Position = value; }
        }
        #endregion
       
        public ResponseFilter(Stream inputStream, string file)
        {
            m_File = file;
            m_ResponseStream = inputStream;
            m_ResponseHtml = new StringBuilder();
        }

        public override long Seek(long offset, SeekOrigin origin)
        {
            return m_ResponseStream.Seek (offset, origin);
        }

        public override void SetLength(long length)
        {
            m_ResponseStream.SetLength (length);
        }

        public override int Read(byte[] buffer, int offset, int count)
        {
            return m_ResponseStream.Read (buffer, offset, count);
        }

        public override void Write(byte[] buffer, int offset, int count)
        {
            Encoding encoding = Encoding.Default;
            string strBuffer = encoding.GetString (buffer, offset, count);
            m_ResponseHtml.Append (strBuffer);
            m_ResponseStream.Write (buffer, offset, count);           
        }

        public override void Close()
        {
            using (StreamWriter writer = new StreamWriter(m_File))
            {
                writer.Write(m_ResponseHtml.ToString());
                writer.Close();
            }
            m_ResponseStream.Close();
        }
    }
}

Og så konfigurerer du modulet i web.config under system.web:
<httpModules>
    <add name="HtmlSaver" type="CustomModules.HtmlSaver"/>
</httpModules>

Så tror jeg du får det hele med.

Mvh
Avatar billede snepnet Nybegynder
12. august 2006 - 15:20 #8
Så får du hele outputtet fra samtlige sider, men du kan self. godt nøjes med at gøre det lokalt for én enkelt side hvis det er det du vil.
Mvh
Avatar billede soc127754 Nybegynder
12. august 2006 - 16:28 #9
Fedt. Tak. Det ser ud til at spille!!! Hvis du opretter et svar kvitterer jeg.
Avatar billede snepnet Nybegynder
12. august 2006 - 16:55 #10
Et svar kommer her :o)
Mvh
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