利用ASP.NET的WebRequest來判斷URL網址是否正常,並且結合IECapt取得URL的畫面
網路上有一個有名的snap shots的網站,主要是提供blog外掛超連結預覽的功能
小弟就去網路上找了一下資料,如何利用ASP.NET達到這個功能..
其實主要透過一支win的程式(IECapt)來取得url的畫面就可以做到了...
當然在抓取url的畫面前,可以先用WebRequest的GetResponse來判斷此url是否正常...c#範例
IECapt.aspx
01 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="IECapt.aspx.cs" Inherits="IECapt" %>
02
03 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04 <html xmlns="http://www.w3.org/1999/xhtml">
05 <head id="Head1" runat="server">
06 <title>IECapt</title>
07 </head>
08 <body>
09 <form id="form1" runat="server">
10 <div>
11 <asp:TextBox ID="TextBox1" runat="server" Width="300px">http://blog.blueshop.com.tw/hent/</asp:TextBox>
12 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="取得畫面" />
13 <br />
14 <asp:Image ID="Image1" runat="server" /></div>
15 </form>
16 </body>
17 </html>
18
02
03 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04 <html xmlns="http://www.w3.org/1999/xhtml">
05 <head id="Head1" runat="server">
06 <title>IECapt</title>
07 </head>
08 <body>
09 <form id="form1" runat="server">
10 <div>
11 <asp:TextBox ID="TextBox1" runat="server" Width="300px">http://blog.blueshop.com.tw/hent/</asp:TextBox>
12 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="取得畫面" />
13 <br />
14 <asp:Image ID="Image1" runat="server" /></div>
15 </form>
16 </body>
17 </html>
18
IECapt.aspx.cs
01
using System;
02
using System.Data;
03
using System.Configuration;
04
using System.Collections;
05
using System.Web;
06
using System.Web.Security;
07
using System.Web.UI;
08
using System.Web.UI.WebControls;
09
using System.Web.UI.WebControls.WebParts;
10
using System.Web.UI.HtmlControls;
11
using System.Diagnostics;
12
using System.Net;
13
14
public partial class IECapt : System.Web.UI.Page
15
{
16
//IECapt下載網址,下載後請放在跟此檔案相同位置
17
//http://iecapt.sourceforge.net/
18
protected void Page_Load(object sender, EventArgs e)
19
{
20
21
}
22
protected void Button1_Click(object sender, EventArgs e)
23
{
24
string URL = this.TextBox1.Text;
25
bool Ok = true;//預設URL的狀態是正常的
26
WebRequest request = WebRequest.Create(URL);
27
request.Proxy = null;
28
try
29
{
30
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
31
Response.Write("\n Site Exists.");
32
}
33
catch (Exception exc)
34
{
35
Response.Write("\n Site does not exists.");
36
Ok = false;
37
}
38
39 //URL是正常運作,才抓取URL畫面
40
if (Ok != false)
41
{
42
Process proc = new Process();
43
44 //IECapt.exe path
45
proc.StartInfo.FileName = Server.MapPath("~/IECapt.exe");
46
47 //將取得的畫面暫存為image.png檔
48
proc.StartInfo.Arguments = this.TextBox1.Text + " " + Server.MapPath("~/image.png");
49
proc.Start();
50
51 //等待IECapt程式執行完畢
52
proc.WaitForExit();
53
54 this.Image1.ImageUrl = "image.png";
55
}
56
57
}
58
}

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39 //URL是正常運作,才抓取URL畫面
40

41

42

43

44 //IECapt.exe path
45

46

47 //將取得的畫面暫存為image.png檔
48

49

50

51 //等待IECapt程式執行完畢
52

53

54 this.Image1.ImageUrl = "image.png";
55

56

57

58

執行結果:
參考網址:
http://iecapt.sourceforge.net/
http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=47537
http://www.snap.com/snapshots.php