Solved

System.Net.HttpWebRequest.Create(url), something simular.

Posted on 2003-11-11
6
2,051 Views
Last Modified: 2012-05-04
Ok, what I which to acheive is to send my page to an email everytime a person views it.

The emailing part is ok, but how can I save the response.outputstream of my aspx page into a string, once it has run?

Yea it's an odd question I know.

I have this code, which does this from another page but I want to get the stuff from the page that is running.

private String readHtmlPage(string url)
{
                String result;
                System.Net.WebResponse objResponse;
     System.Net.WebRequest objRequest = System.Net.HttpWebRequest.Create(url);
     objResponse = objRequest.GetResponse();
     using (System.IO.StreamReader sr =  new System.IO.StreamReader(objResponse.GetResponseStream()) )
     {
          result = sr.ReadToEnd();
          // Close and clean up the StreamReader
          sr.Close();
     }
     return result;
}
0
Comment
Question by:iqula
  • 3
  • 3
6 Comments
 
LVL 28

Expert Comment

by:mmarinov
Comment Utility
0
 

Author Comment

by:iqula
Comment Utility
Thanks, but this appends to the output stream, what I need is the output stream as a string, or am I missing something here :)
0
 
LVL 28

Accepted Solution

by:
mmarinov earned 300 total points
Comment Utility
you can see here how you can resolve the problem
http://support.microsoft.com/default.aspx?scid=kb;en-us;810205

you can get the whole code :-) and Response.Filter = new ResponseFilter(Response.Filter); not in Init like it is described but in the Application_BeginRequest in global.asax file.

B..G
0
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 

Author Comment

by:iqula
Comment Utility
This looks very promising, how can I get the string instead of writinf to a file?
0
 
LVL 28

Expert Comment

by:mmarinov
Comment Utility
you can use this code in overriden void Close()

sr = new StreamReader(@"C:\FilterOutput\response.htm");
s = sr.ReadToEnd();
sr.Close();

and after that to send s to static variable in your class

so every time you submit a page at the end of the request you will send the content of this file and when you enter again in the PageLoad you can get it

B..G
0
 

Author Comment

by:iqula
Comment Utility
I'm not sure how you chaps know this stuff, but I'm really impressed :)

Here is my solution: Thanks

      public class EmailThisPage :Stream
      {
            //Call from an aspx page within the OnInit(EventArgs e), like this
            //------------------------------------------------------------------
            //tools.EmailThisPage ep = new tools.EmailThisPage(Response.Filter);
            //ep.From="name@domain.com";
            //ep.To="name@domain.com";
            //ep.Subject="A page email";
            //ep.SmtpServer="localhost";
            //Response.Filter = ep;
            //------------------------------------------------------------------
            private Stream m_sink;
            private long m_position;
            public string From, To, Cc, Bcc, Subject, SmtpServer;
            public Exception error;

            public EmailThisPage(Stream sink)//Response.Filter
            {
                  m_sink = sink;
            }

            // The following members of Stream must be overriden.
            public override bool CanRead
            {get { return true; }}

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

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

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

            public override long Position
            {
                  get { return m_position; }
                  set { m_position = value; }
            }

            public override long Seek(long offset, System.IO.SeekOrigin direction)
            {
                  return 0;
            }

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

            public override void Close()
            {
                  m_sink.Close();
            }

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

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

            // Override the Write method to filter Response to a file.
            public override void Write(byte[] buffer, int offset, int count)
            {            
                  string body;
                  //Write out the response to the browser.
                  m_sink.Write(buffer, 0, count);
         
                  body=System.Convert.ToBase64String(buffer, 0, buffer.Length);

                  System.Text.UTF8Encoding objUTF8 =new System.Text.UTF8Encoding();
                  body= objUTF8.GetString(Convert.FromBase64String(body));
                  //Write out the response to the string.
                  try
                  {

                        MailMessage Mailer = new MailMessage();
                        SmtpMail.SmtpServer = SmtpServer;
                        Mailer.From = From;
                        Mailer.To = To;
                        Mailer.Cc = Cc;
                        Mailer.Bcc = Bcc;
                        Mailer.Subject = Subject;
                        Mailer.Body =body;


                        Mailer.BodyFormat = System.Web.Mail.MailFormat.Html;
                        SmtpMail.Send(Mailer);
                  }
                  catch
                  {
                        MailMessage Mailer = new MailMessage();
                        SmtpMail.SmtpServer = SmtpServer;
                        Mailer.From = From;
                        Mailer.Cc = Cc;
                        Mailer.Bcc = Bcc;
                        Mailer.Body =body;
                        Mailer.BodyFormat = System.Web.Mail.MailFormat.Html;
                        Mailer.To =      System.Configuration.ConfigurationSettings.AppSettings["erroremail"];
                        Mailer.Subject = "Email Error (To:)" + To + " (Subject:)" + Subject;
                        SmtpMail.Send(Mailer);
                  }
            }
      }
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Summary Displaying images in RichTextBox is a common requirement with limited solutions available. Pasting through clipboard or embedding into RTF content only support static images.  This article describes how to insert Windows control objects int…
In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now