[ASP.NET]在html中加入遠端網頁的內容
- 使用<iframe>:這種方式大概是最常被使用到的。
Sample:
<iframe NAME="outer_frame" width="100%" height="100%"
frameborder="0" src="http://www.w3schools.com/" ></iframe>
Note:iframe的width或height設定成100%時,並不會依iframe網頁內容而造成無捲軸的現象。
若要透過javascript去依iframe的內容調整iframe的width或height,也只有同iframe所嵌頁面與外部網頁同domain的情況下可行
,不同domain會因access deny(存取被拒)而無法完成此修改width或height的動作。
- 使用<object>:不常見,且使用者端的瀏覽器需要在安全性設定上將[使用指令碼片段](scriptlet)設定為[啟用]。
Sample:
<object width=100% height="100%" border="0"
type="text/x-scriptlet" data="http://www.w3schools.com/"></object>
- 透過Javascript使用XMLHTTP:在各個AJAX的教學網站中,都會提到使用Microsoft.XMLHTTP或XMLHttpRequest物件去讀取其他網頁的資源。
不過一樣會受限於瀏覽器的存取權限,只能讀取同domain的網路資源。
Sample:
function displayResult(strUrl, displayOid) {
try {
//取得顯示資料的object
var oDisplay = document.getElementById(displayOid);
var xmlhttp = null;
if (window.ActiveXObject) { // IE
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
else if (window.XMLHttpRequest) { // Mozilla
xmlhttp = new XMLHttpRequest();
if (xmlhttp.overrideMimeType) {
try {
//設定MimeType(如果讀取有問題,加這一段或許可解決)
xmlhttp.overrideMimeType('text/xml');
}
catch (e) {}
}
}
if (xmlhttp != null && oDisplay != null) {
//設定讀取資料的事件處理函式
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {// 4 = "complete"
if (xmlhttp.status == 200) {// 200 = "HTTP 200 OK"
//將讀取到的字串設定至目的物件的innerHTML
oDisplay.innerHTML = xmlhttp.responseText;
}
}
};
//第三個參數是設定是否要非同步(true:要,false:不要)
xmlhttp.open("GET", strUrl, true);
xmlhttp.send(null);
//如果要用POST,參考以下附註的做法
//var params = "id=1&subid=2";
//xmlhttp.open("POST", strUrl, true);
//xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//xmlhttp.setRequestHeader("Content-length", params.length);
//xmlhttp.setRequestHeader("Connection", "close");
//xmlhttp.send(params);
}
else {
alert("你的瀏覽器不支源XMLHTTP");
}
}
catch (e) {
alert("錯誤:" + e.description);
}
}
- 寫一個泛型處理常式(ashx)來讀取遠端的檔案:
其實一開始是想讓B網站的網頁(html)透過Javascript的方式讀取A網站的特定網頁
,不過一直卡在存取權限上只好換這樣的做法。
- 在A網站中新增一個泛型處理常式(ex:ReadRemoteUrl.ashx)。
- 在ashx裡將context.Response.ContentType設定為"text/javascript",程式碼如下:
public class ReadRemoteUrl : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//先將資料清空
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ClearContent();
//設定為Javascript
context.Response.ContentType = "text/javascript";
try
{
//判斷是否有指定的url要讀取
if (!string.IsNullOrEmpty(context.Request["url"]))
{
//透過WebClient讀取資料,如果是讀xml,可以透過XmlDocument的Load()
string strWebContent = string.Empty;
using (System.Net.WebClient oClient = new System.Net.WebClient())
{
strWebContent = oClient.DownloadString(context.Request["url"]);
}
//"取代為\", '取代為\', NewLine取代為空字串
string strContent = System.Text.RegularExpressions.Regex.Replace(
strWebContent, "[\"']|(\\r\\n)", delegate(System.Text.RegularExpressions.Match m)
{
switch (m.Value)
{
case "\"":
return "\\\"";
case "'":
return "\\'";
default:
return string.Empty;
}
});
//設定輸出內容的Encoding(預設UTF8)
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
//判斷是否有指定的Encoding(這邊只分big5和utf8)
if (!string.IsNullOrEmpty(context.Request["enc"]))
{
if (context.Request["enc"].Equals("big5", StringComparison.OrdinalIgnoreCase))
{
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding(950);
}
}
//利用Javascript的document.write()將網頁資料輸出
context.Response.Write("document.write(\"" + strContent + "\");");
}
}
catch (Exception e)
{
context.Response.Clear();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
- 在B網站的網頁中可以使用<script>的方式進行呼叫,例如:(讀取http://www.w3schools.com/xsl/cdcatalog.xml)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>這是測試</title>
</head>
<body>
<div id="divResult">
<script type="text/javascript"
src="http://192.168.1.3/MyTest/ReadRemoteUrl.ashx?url=http://www.w3schools.com/xsl/cdcatalog.xml"></script>
</div>
</body>
</html>
Note:讀取網頁內容一般是用在讀取XML或一些較簡單的網頁內容。有點像是在嵌入一個小廣告之類的資料。
所以最好在ashx裡多加一些判斷,例如只有某幾個介接網站可使用,或是只能讀取特定的一些資源。
參考引用自: http://www.dotblogs.com.tw
Zabo 發表在 痞客邦 留言(1) 人氣(4,956)

今早教各位如何讓 Gmail 將內送郵件自動轉寄到其他地址。
自動轉寄郵件的方法如下:
1. 登入您的 Gmail 帳戶。
2. 按一下任何 Gmail 網頁上方的 [設定]。
Zabo 發表在 痞客邦 留言(0) 人氣(4,974)

Wikiplex 簡介
Wikiplex 是一種在 .NET Framework 上所開發,具有處理 Wiki 編輯巨集功能的小型函式庫元件,它提供了數種編輯樣式的格式,以讓使用者可以類似編輯維基百科內容一樣的作法來創立網頁的內容,此元件可以應用在內容管理的系統中。它大量運用了 Regular Expression 來處理巨集剖析的功能,並利用樣板來產生必要的 HTML 指令,如果有心學習 Regular Expression 應用的讀者,可以多看看這個元件的原始程式碼,可以得到很多的心得。
NOTE
Wikiplex 的原始程式碼,可以透過這裡來瀏覽:
http://wikiplex.codeplex.com/SourceControl/list/changesets
Zabo 發表在 痞客邦 留言(2) 人氣(224)
.jpg)
維基百科傳奇
只要是在網路上活動了一定的時間,或是經常上網路找資料查東西的人,相信對維基百科(Wikipedia)不會陌生,這個出現在 2001 年的網路內容協作平台,在數年的發展以及維基媒體基金會(Wikimedia Foundation)的努力下,已經成長到超過 1,400 萬個條目、一百多萬個影像資料、兩千萬個使用者的規模,並且在全球各地均有設置主機以服務大量的查詢與編輯量,可說是網路上最成功的協作式百科全書成功案例。
維基百科由 Jimmy Wales 以及 Larry Sanger 創辦,利用了 Wiki 平台的特性,讓網路上的使用者可以自由的對內容做編撰,而且編撰的範圍是自由不受限的(除了因為某些因素而封閉權限的內容外),在 Wikipedia 中的內容比一般書面的百科全書更快更即時,資料來源都是熱心的網友們,大家都可以在這個開放式的協作平台上貢獻自己的各式資訊-只要是有查證來源的都可以。
Zabo 發表在 痞客邦 留言(0) 人氣(186)

Zabo 今天補充個小地方,上次在 Dec 28 Mon 2009發布的文章:「如何在 Windows Server 2008 上使用網路芳鄰?」中,漏掉一點沒提到。
上次的文章中所教大家設定的地方是 Windows 防火牆,去設定檔案及印表機共用 (回應要求 - ICMPv4-In)設定為已啟用且允許執行。基本上 Windows 在設計上有點怪異,有時候設定 Windows 防火牆就可以了,網路芳鄰也使用的很順,但是有時候一個重開機,慘了!本來可以通的網路芳鄰卻又掛了,Why?!
Zabo 發表在 痞客邦 留言(0) 人氣(2,980)

Windows Server 2008 預設值將網路芳鄰關閉,導致檔案要透過區域網路共享都會遇到連線不通的問題,Zabo 在這裡教大家一個小撇步,那就是把Windows Server 2008 防火牆做個設定,這和 ICMP 協定有關。
只要將您的 Windows Server 2008 的防火牆中的"輸入規則",檔案及印表機共用 (回應要求 - ICMPv4-In)設定為已啟用且允許執行動做,這樣網路芳鄰就沒問題囉!趕緊試看看!
Zabo 發表在 痞客邦 留言(0) 人氣(7,303)
現在的伺服器 CPU 等級都很高檔,原先公司規畫要做代收系統,所以我原先要請購了兩套伺服器,但是由於預算的問題,加上現在硬體等級又都可以應付,畢竟代收的資料筆數也不會多到資料庫無法負荷,所以就決定了,在 Windows Server 2008 上用 IIS 架 Web Server,然後利用 HyperV 架構架設虛擬主機,在虛擬主機上架上 SQL Server 2008,由於這個 SQL Server 2008 因為未來要給多套系統使用,所以還是用虛擬機器架伺服器區隔開的好。
但是問題來了,我用 ASP.NET 寫的 Web Applicatoin 局然連不到 HyperV 上的 SQL Server?! ,訊息是 SQL Server 不允許遠端連線。查了很久才查出原因,原來是因為Windows Server 2008 本身內建的防火牆會檔 SQL Server 的 1433 port。
見招拆招吧!為了要讓 Web Applicatoin 連到 HyperV 上的 SQL Server,就必須先把 HyperV 上的 防火牆開啟 SQL Server 的連接埠,該怎麼做呢?!請依照下列步驟執行:
啟動 [記事本]。
將複製並貼到 「 記事本 」 的下列程式碼:
@echo ========= SQL Server Ports ===================
@echo Enabling SQLServer default instance port 1433
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Enabling Dedicated Admin Connection port 1434
netsh firewall set portopening TCP 1434 "SQL Admin Connection"
@echo Enabling conventional SQL Server Service Broker port 4022
netsh firewall set portopening TCP 4022 "SQL Service Broker"
@echo Enabling Transact-SQL Debugger/RPC port 135
netsh firewall set portopening TCP 135 "SQL Debugger/RPC"
@echo ========= Analysis Services Ports ==============
@echo Enabling SSAS Default Instance port 2383
netsh firewall set portopening TCP 2383 "Analysis Services"
@echo Enabling SQL Server Browser Service port 2382
netsh firewall set portopening TCP 2382 "SQL Browser"
@echo ========= Misc Applications ==============
@echo Enabling HTTP port 80
netsh firewall set portopening TCP 80 "HTTP"
@echo Enabling SSL port 443
netsh firewall set portopening TCP 443 "SSL"
@echo Enabling port for SQL Server Browser Service's 'Browse' Button
netsh firewall set portopening UDP 1434 "SQL Browser"
@echo Allowing multicast broadcast response on UDP (Browser Service Enumerations OK)
netsh firewall set multicastbroadcastresponse ENABLE
使用下列的名稱儲存成.txt 檔案檔案:
OpenSqlServerPort.txt
OpenSqlServerPort.txt 檔案重新命名為下列:
OpenSqlServerPort.bat
Zabo 發表在 痞客邦 留言(1) 人氣(4,397)

由於開發一套新的銀行代收系統,採購了新的伺服器,主機採購的是 ACER 最新的 2U 的伺服器,此次效能如何,就靜待 Zabo 系統上線測試吧!
由於目前網路上看到的 SQL Server 2008 於 X64 系統上安裝的介紹文章不多,趁這次安裝的過程,做個紀錄,好讓大家知道 SQL Server 2008 於 X64 的系統上是如何安裝的!
這裡要特別注意,若您的伺服器是 X64 的 64 位元主機,要安裝 SQL Server 2008 一定必須要安裝 Service Pack 1,否則未來執行是會遇到不該出現的突發狀況!
Zabo 發表在 痞客邦 留言(0) 人氣(2,905)

Mr.Zabo 為了建立自己這個部落格,用了許多小工具。其中痞客邦雖然有內建搜尋的功能,但是因為 Google Search 的功能更完整且更符合搜尋的結果,所以 Mr.Zabo 決定讓Google幫部落格做為內部的「搜尋引擎」。
要如何做才能讓 googe 的搜尋引擎為您效力呢?其實在 google 的首頁,利用一些關鍵字的搜尋,就能找出您網站的關鍵文章。例如:在 google 首頁的搜尋方塊中輸入 “ 關鍵字 site: 網址 ” 的格式,例如 "SQL site:zabo.pixnet.net" 。這樣就能找出在 zabo.pixnet.net 含 "SQL" 關鍵字的文章。只不過這種方式,並不是我們這次要用在 Mr.Zabo 的搜尋區塊中的方式。
這裡一步一步教各位建立自己站內的 google 搜尋引擎,首先我們先到Google 自訂搜尋引擎的網頁: http://www.google.com/coop/cse/
Zabo 發表在 痞客邦 留言(0) 人氣(5,659)

這周接到一間廣告公司的請求,他們接了一間鄉鎮公所的網頁改版案件,業務員先接洽看似簡單,所以很爽快的就接了下來。等到網頁樣板設計好,一切就緒後,請程式設計師幫忙套版,挖勒!他們公司的 Programer 這下才發現事情大條了!這不是單純用 PHP 所寫的程式,而是之前的接案公司為了方便,採用了 Open Source 界鼎鼎大名的架站機:Xoops
筆者早在2002年,那時為了所待的公司因為預算的問題,就採用了 Xoops 作為公司入口網站的架設:
雖然和 Xoops 結緣很早,但是使用上都只是進管理平台,使用它的模組,兜出一個看起來還蠻像樣的網站罷了。這次案主遇到的問題可是樣板的設計與更改,這連我也沒遇到過,但是人家熱情請求,也只好硬著頭皮去嘗試看看啦!以下就是這次遇到要改的和美鎮公所的首頁:
Zabo 發表在 痞客邦 留言(1) 人氣(1,306)