Screenshot of webpage in asp.net c#

2019-09-11 06:54发布

问题:

I am getting the screeshot of the website. The problem is i have textboxes on the screen. When i take screen shot the values of textboxes are not appearing. Can someone guide me in rearranging the code. Thank you

protected void Button1_Click(object sender, EventArgs e)
{
    MailMessage msg = new MailMessage(txt_From.Text, txt_To.Text);
    try
    {
        msg.Subject = txt_Subject.Text;
        msg.Body = "<br /><b>form:</b> " + form1 + "<br /><b>From:</b> " + txt_From.Text + "<br /><b>To:</b> " + txt_To.Text + "<br /><br /><br /><br /><b>Name:</b><hr />" + TextBox1.Text + "<br /> <br /><b>Date:</b><br /><hr /><br />" + TextBox2.Text + "<br /><br />";
        msg.IsBodyHtml = true;
        WebRequest mywebReq;
        WebResponse mywebResp;
        StreamReader sr;
        string strHTML;
        StreamWriter sw;

        // Put user code to initialize the page here

        mywebReq = WebRequest.Create("http://localhost:4101/WebForm2.aspx");
        mywebResp = mywebReq.GetResponse();
        sr = new StreamReader(mywebResp.GetResponseStream());
        //sr = new StreamReader(mywebResp.GetResponseStream(), System.Text.Encoding.ASCII);
        strHTML = sr.ReadToEnd();
        sw = File.CreateText(Server.MapPath("Report.htm"));
        sw.WriteLine(strHTML);
        sw.Close();
        Response.WriteFile(Server.MapPath("Report.htm"));

        Attachment objAttachment = new Attachment(@"C:\Users\2714\Documents\Visual Studio 2010\Projects\Certificate\Certificate\Report.htm");
        msg.Attachments.Add(objAttachment);
        System.Net.Mail.SmtpClient objSmtpClient = new SmtpClient("10.238.52.200", 25);
        objSmtpClient.Send(msg);
    }
    catch (Exception ex)
    {
        throw ex;
    }    
}

回答1:

When you make a capture of the web page is logical to not see anything that the user have type on it - Actually is not exist, you just make a load of the page, what you expect to see on text boxes ?

If you try to get a report for debug reasons and you won to see what happens on the page at the moment of the issue then you need to use a javascript library that build (as he can) the dom of the page and send it to you. All this actions request the user to make them - to capture the web page and send it with email, even if you can make it automate, the user must deride if he like to show you what have type on them.

An example http://experiments.hertzen.com/jsfeedback/ and the library http://html2canvas.hertzen.com/ that can capture what the user see on screen.

relative : How can I convert an HTML element to a canvas element?