2011年4月29日 星期五

Cisco SLA 電路備援 自動切換

建立兩筆SLA  每一條電路建一個SLA   基本上就是ping 遠端 IP  

定義 timeout 時間  與  失敗的 threshold 次數


ip sla 5
 icmp-echo 10.255.254.49 source-ip 10.255.254.50
 request-data-size 100
 timeout 2000
 threshold 2
 frequency 2
ip sla schedule 5 life forever start-time now

ip sla 6
 icmp-echo 10.255.254.53 source-ip 10.255.254.54
 request-data-size 100
 timeout 2000
 threshold 2
 frequency 2
ip sla schedule 6 life forever start-time now

track 458 ip sla 5 reachability
track 459 ip sla 6 reachability

ip route 0.0.0.0 0.0.0.0 10.255.254.49        track 458
ip route 0.0.0.0 0.0.0.0 10.255.254.53 50  track 459


優先的 routing 是 track 458,如果track 458 ping失敗後, 路由會變成第二順位
達成自動備援功能,主要路由的 tracking 恢復後,就立即恢復第一路由
以此達成自動備援的目的

Site to Site VPN 測試結果與心得

這幾天為了測試與廈門建立 Site to Site VPN   搞到焦頭爛額

因為台灣這邊用的是 Cisco ISR 3825 Router 而大陸廈門那邊則用 Juniper SSG 320m

怎麼弄就是起不來 最後就得到一串錯誤訊息  "decrypted packet failed SA identity check"

廈門那邊就一付老大心態   擺明他那邊沒問題      也沒時間查   也不給我看設定檔

我只能悶著頭測試   搞了老半天也沒有一個明確的解答     所以就是..........無解

最後 我借了台 cisco isr 2811 來和 3825 對接測試   果然是  "自己人比較好說話"

Cisco 3825 老大說的話    2811怎能敢不聽呢    所以vpn就建起來囉

證明我的設定沒有錯    再來就換證明Cisco 與 Juniper 不同兩家人說的話    彼此聽不聽得懂囉

跟廠商借一台  juniper netscreen 208  並順帶借了工程師來設定

雙方互測半天     最後還是  cisco 公說公有理  juniper 婆說婆有理   的局面

最後只好使出大絕招   用廠商的 juniper  208 與廈門互連   果然又是一個自家人好說話的局面

一連就通了    這不禁使我想罵人  以前廠商推銷設備都說   現在什時代了

通訊協定都標準化了    不同廠牌怎麼可能會無法溝通勒    真他媽的ooxx 屁話

keyword:

IPSec : 這只是一個 IETF 制定的開放標準,主要用來保護 internet 溝通時的資料安全,主要功能為認證與加密。

IPSec包含兩個部分,一個是IKE (Internet Key Exchange),主要負責金鑰的交換,另外一部份就是負責封包的加解密。

IKE的協商過程分為兩個階段,第一階段建立SA(安全協議),負責溝通雙方的安全機制,第二階段就是建立IPSec連線。


isakmp   (Internet Security Association and Key Management Protocol)  網路安全協議與秘鑰管理

IKE 第一階段 利用 isakmp 達成SA協議與秘鑰管理

crypto isakmp enable    先將協定啟動
crypto isakmp policy 100                // 建立一個 isakmp的 policy
hash md5                                          // 以MD5的做認證
encr des                                            // 以DES作加密
authentication pre-share                 // 認證方式為  pre-share key
group 2                                             // Group 2
lifetime 28800
exit


crypto isakmp key  key-value  address ip-address             //指定 pre-share key


crypto ipsec transform-set ESP-DES-SHA esp-des esp-sha-hmac  //定義第二階段的加解密方式
mode tunnel  //  可以選擇 tunnel 或是 transport 模式
exit

指定 Access-List  確認哪些要經過VPN網路
ip access-list extend  Xmsertec
permit ip 192.168.102.0 0.0.0.255   172.17.0.0 0.0.255.255    //兩端的LAN
exit

第二階段
crypto map map_name 1 ipsec-isakmp
 set security-association life seconds 3600
 set pfs group2
 set peer  ip-address          // Remote site 的 ip address
 set transform-set ESP-DES-SHA
 match address Xmsertec


最後要記得將 crypto map 綁到 interface上面   應該就大功告成啦

另外還有一些相關驗證測試的 command

show crypto isakmp sa  // 看第一階段是否建立
show crypto ipsec sa  // 看第二階段是否完成
show crypto engine connection active  //查看目前的IPSec連線

2011年1月14日 星期五

MSSQL 建立 Link Server 連至 Oracle DB Server

再安裝完 instant client 之後,必須要設定一些環境變數,如:

NLS_LANG = TRADITIONAL CHINESE_TAIWAN.zht16big5
TNS_ADMIN = 指到 tnsnames.ora 目錄
(tnsnames.ora 通常是在 instant client 目錄中建立 /network/admin 下面存放 )

之後最好先以Oracle 的 sql developer 等軟體測試驗證看看是否可以成功連至遠端Oracle server

如果先前準備工作順利完成後, 就可以開始來建立 Link Server 了



如果使用tnsnames.ora 來指出 oracle 的服務 如



則產品名稱填寫 Oracle 與 資料來源填寫 tnsnames.ora 裡面的 網路服務名稱 ,這裡是 NANTOUCS,並給予這個Link Server 一個名字,如 Oracle



在安全性的那一頁 填寫上登入的帳號密碼



完成後點選確定即可完成,如果事前準備工作有缺漏,則在這裡就可能會跳出錯誤訊息

如果要確認是否 Link Server 是否連結正常,可以做個連線測試



成功的話會跳出成功的訊息,如



失敗的話就會跳出錯誤訊息,如



做到這裡就已經大功告成了 可以開始對遠端的 oracle server 作查詢了 ^^

最後發覺一個重點,就是為什麼有的需要設定ODBC,有的不用,原因是因為...

如果您使用 Microsoft ODBC Driver for Oracle,則可使用 @datasrc 參數來指定 DSN 名稱。如果無 DSN 連線,則提供者字串可透過 @provstr 參數提供。有 Microsoft OLE DB Provider for Oracle 時,使用在 TNSNames.Ora 檔案中設定的 Oracle 伺服器別名來當作 @datasrc 參數。

另外一點(這也是從微軟網站上面挖的)

注意 如果您使用協力廠商的 Oracle 提供者,且 Oracle 提供者無法在 SQL Server 處理程序外執行,請變更提供者選項,以執行同處理序。如果要變更提供者選項,請使用下列其中一種方法。
  • 方法 1
    找出下列登錄機碼。然後,將 AllowInProcess (DWORD) 項目的值更改為 1。可在對應的提供者名稱底下找到此登錄機碼:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
  • 方法 2
    當您新增新的連結伺服器時,透過 SQL Server Enterprise Manager 直接設定 [允許 InProcess]選項。按一下 [提供者選項],再按一下以選取 [允許 InProcess] 核取方塊。

2010年1月20日 星期三

安裝ORACLE client

以前要連線Oracle 必須透過Oracle client 程式來連接,
在10g 的版本提供了新的 instant Client 可以不用再安裝龐大的 Oracle Client

之後需要設定一些系統環境變數
設定PATH環境變數,加入C:\Oracle\Ora10IC
設定TNS_ADMIN環境變數,指向TNSNAMES.ORA。
設定NLS_LANG環境變數,設定預設的語系('TRADITIONAL CHINESE.ZHT16BIG5'),不然查詢結果中文會變亂碼

tnsnames.ora 範例
SALES =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.20)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

之後設定ODBC讓Hyperion 透過ODBC 連線

2008年10月24日 星期五

PageRequestManagerServerErrorException

發生錯誤訊息 Sys.WebForms.PageRequestManagerServerErrorException

處理方式為 在aspx原始檔案中加入
<%@Page ValidateRequest="false"> 即可

2008年9月30日 星期二

無法修改 Controls 集合,因為控制項包含程式碼區塊 (例如 <% ... %>)

今天遇到了這個錯誤訊息,不過很奇怪,之前都正常,只更新一下MasterPage之後就變成這樣,
所以我想應該是MasterPage的問題

上google去go一下,發覺中文的資訊不多,
不過大概可以知道 可能是程式裡面 有<%= ..... %> 這種寫法 然後又遇到
動態加入控制項 Controls.Add所導致的問題

後來我發現 MasterPage有下面這一段



之後我就把它改成

void Page_Load(object sender, EventArgs e)
{
HtmlGenericControl Hgc = new HtmlGenericControl("script");
Hgc.Attributes["src"] = Page.ResolveUrl("~/images/swfobject.JS");
Hgc.Attributes["type"] = "text/javascript";
header.Controls.Add(Hgc);
}

就沒有問題啦

參考網址 MSDNJude隨手寄事其他

2008年9月17日 星期三

Ajax下要匯出 Excel

基本上從GridView匯出EXCEL檔案不是一件多了不起的事
但是如果在Ajax環境下就會有點問題
因為最後要 Response.write
才可以把EXCEL匯出去

但是偏偏Ajax環境下卻不允許Response.write
會出現 Sys.WebForms.PageRequestManagerParserErrorException 這個錯誤訊息

該怎麼辦勒

可以參考這一篇

要輸出Excel那個按鈕設定成updatepanel中triggers的postbacktrigger就可以了

但是為什麼勒?? 我不知道說 呵呵

2008年9月3日 星期三

開發Crystal report 經驗談 (二)

雖然之前的方法可以解決我電腦上出現的問題,
不過在發佈出去後,似乎好像也是有諸多麻煩,
我希望可以是自動安裝的方式,由使用者安裝,
後來找到這篇文章,這是微軟的說明

裡面有個重點,就是我需要把下列說明加到web.config中

<configsections>
<sectiongroup name="businessObjects">
<sectiongroup name="crystalReports">
<section name="printControl" type="System.Configuration.NameValueSectionHandler, System, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null">
</sectiongroup>
</sectiongroup>
</configsections>
<businessobjects>
<crystalreports>
<printcontrol>
<add key="url" value="http://localhost/PrintControl.cab" />
</printcontrol>
</crystalreports>
</businessobjects>

不過紅字部分要特別注意一下,這是指定PrintControl.cab的路徑,

這個元件是下載自businessObjects的網站,當使用點選列印後,

若電腦沒有安裝Crystal Report的元件,網頁會彈跳出要求下載安裝的訊息,

不過這個前提是,列印方式要指定為ActiveX

CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;

還有需要把IE 中關於 ActiveX的限制打開,這樣才可以正確運作,終於大功告成啦,

這樣才是一個方便使用者操作的網頁





開發Crystal report 經驗談 (一)

最近因為案子需要建立報表,以前在BCB做過一次報表,那次是很不好的經驗,
搞了好久,最後才成功。問題是這次是WEB版的報表,沒用過其他報表軟體,
我只好使用VS2005的水晶報表,聽這名字感覺好像很讚, 水晶ㄟ 不過..........
又是一次不好的經驗,今天先不談開發經驗,先說一下發佈好了,

我將發佈完成的網站COPY到目的SERVER去,結果出現Error,勒這是什麼情形勒?
剛剛在我電腦就好好的,怎麼一下到了馬來西亞就......

ㄚ是怎樣ㄇㄟ 水土不服喔 我去馬來西亞八天 都很開心啊 也沒拉肚子啊

怎麼那麼遜勒 不管啦,先來看看是啥錯誤訊息吧

Server Error in '/' Application.--------------------------------------------------------------------------------Configuration ErrorDescription: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.Parser Error Message: Could not load file or assembly 'CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The system cannot find the file specified.

光看到Could not load file or assembly 'CrystalDecisions.Web
我大概就知道 是 那個水晶給我帶來的問題,不過翻了很久卻都找不到答案,
很多人說要把一些 crystal report 的 dll 檔給COPY到 BIN的目錄去就可以,
不過我覺得這樣的解決方式很怪,後來找很久才發現
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\CrystalReports在這個目錄下 有一個 CRRedist2005_x86.msi 的檔案
只要在目的機器裝上這個就可以了
真是夭壽勒 搞這啥東東 下次一定要記得

DataTable.Rows的刪除

DataTables.Rows.Removeat 和 DataTable.Rows.Delete 這兩個是有所差異的

Removeat 是立即刪除 而 Delete 卻是註記刪除而已
最後須等到 DataTable.AcceptChanges() 才完成刪除

但是刪除DataTable裡面的Row資料不表示資料庫內的紀錄被刪除掉
DataTable.Rows.RowState 來判斷是 新增、刪除、修改等...狀態來繼續後續的動作
下了Delete之後 無法用 DataRow["FiledName"] 存取欄位資料
它會顯示資料已被刪除的錯誤訊息 不過我覺得很好奇
下了Delete命令不是說註記刪除 但並非真的刪除嗎?
沒錯 所以我們可以透過 DataRow["FiledName",DataRowVersion.Original]
來存取資料 真是好玩 給大家分享囉~~

ActiveSync無法與PC端同步問題

最近購買了一款精業的PDA PA962回來準備大展身手一番
趕快把未完成的工作搞定 不然老闆老是在我背後虎視眈眈
都快變成我的背後靈了 好不容易充完電一插上USB 結果
出現

無法識別USB裝置可能是防火牆封鎖或是要我更新Activesync版本

怪了ㄟ 我電腦又沒有安裝防火牆 有的話也是你微軟自己的
我就搞了半天 把防火牆啟動又關閉 開防火牆的PORT查了網路上一堆解法
............ 還是無解不過其中一個方法算是還有用 就是要我去工作管理員把
rapimgr.exe 關閉後 再插入裝置一次 會出現錯誤訊息不理它 之後勉強可
以看見PDA裝置內容 可以複製資料到裡面

但是要透過 VS2005 執行debug模式會出現 RPC錯誤所以我只能徒法煉鋼
將程式複製到PDA裡面去執行真是雞肋的方法

可是把這台PDA接到其他台電腦卻又可以執行ActiveSync後來因為程式的問題
我更新手機中的 NetCF就是 .NET Compact Framework 2.0 Redistributable
ㄧ安裝完 神奇的事情發生了 小明車禍後斷掉雙腿 現在竟然可以爬起來了
無法同步的問題解決了 連帶無法執行Debug的問題也OK了
所以說 這問題到底出現在哪裡 答案很清楚啊 .......... 微軟自己

害我找這問題 找了好幾天 浪費一堆時間 提供大家參考吧

由於不支援指定的通訊協定,Windows Media Player 無法播放檔案


由於不支援指定的通訊協定,Windows Media Player 無法播放檔案


最近開啟Windows Media Player播放線上的影音,就會出現由於不支援指定的通訊協定,Windows Media Player 無法播放檔案。

請在 [開啟 URL] 對話方塊中,嘗試使用不同的傳輸通訊協定 (例如 "http:" 或 "rtsp:") 來開啟檔案。

可是很奇怪 選項裡面的通訊協定我全勾選了啊,怎麼還是有不支援的通訊協定勒,
唉 找了很多國內文章 幾乎都沒有解 後來我想還是找國外的吧

把錯誤訊息翻譯成英文 果然

Error message: "Windows Media Player cannot play the file because the specified protocol is not supported. If you typed a URL in the Open URL dialog box, try using a different transport protocol (for example, "http:" or "rtsp:")."

找到這個問題,其實這問題微軟本身已有解答 如連結前面說了一大堆廢話只有最後的才有用

If the above fixes don't work, you can rename the networking information folder for the Player so that it can rebuild its networking information files after you restart it.
To rename the Player networking information folder

1.Close Windows Media Player. (To do this, on the File menu, click Exit.)

2.Click Start, and then click Run.

3.In the Run dialog box, type the following (exactly as shown):%UserProfile%\Local Settings\Application Data\Microsoft\Windows MediaThis step opens the following folder on your computer:SystemDrive:\Documents and Settings\UserProfileName\Local Settings\Application Data\Microsoft\Windows Media

4.In this folder, rename the folder 10.0 to 10.0.bak. For more information about renaming folders, see To change the name of a file or folder.

5.Start the Player and try to stream the content again.

修改了名字之後,果然可以播放了ㄟ,終於可以聽線上廣播了 呵呵

如何讓CalendarExtender 顯示中文


把 ScriptManager 的屬性

【EnableScriptGlobalization】、【EnableScriptLocalization】

設為True 就會自動顯示中文啦

Eval 與 Bind 的 Data Binding 方式差別

ASP.NET 2.0 的Data-Binding 資料繫結語法表示符為「<% # %>」,
而裡面必須搭配Eval或Bind指令,也就是<%#Eval("變數名稱")%>
或者<%#Bind("變數名稱")%>,"變數名稱"則為資料來源欄位,而
Eval或Bind兩個方法是有差異的,以下是說明:

.Eval:Eval是用於單向資料繫結,資料是唯讀的顯示。
.Bind:Bind則是雙向的資料繫當,不但能讀取資料,更具有Insert、Update、Delete功能,所以若您需要編輯更新、新增與刪除功能使用本方法。

相對於ASP.NET 1.0舊語法DataBinder.Eval(Container.DataItem,"變數名稱")建議您在GridView、DetailsView及FormView應優先使用新的宣告語法。

asp.net 如何寄送郵件

using System.Net.Mail;

MailMessage NewMessage = new MailMessage();
NewMessage.From = new MailAddress(sFrom, "測試信件", System.Text.Encoding.UTF8);

// sFrom 為寄件者信箱
NewMessage.Priority = MailPriority.High;
// 可以指定此郵件的優先順序
NewMessage.IsBodyHtml = true;
// 是否啟用HTML格式
NewMessage.To.Add(new MailAddress(Recipient.Text));
// 指定收件者 但每個收件者需指定一次 十個收件者就需要十次

NewMessage.Body = tbMessageBody.Text; //信件內容
NewMessage.Subject = tbMailSubject.Text; //信件主旨
NewMessage.Attachments.Add(new Attachment(Server.MapPath(@"~\Report\Log.xls")));
// 加入附加檔案

SmtpClient MailServer = new SmtpClient(sSMTP);
// sSMTP 為外寄郵件伺服器位址

MailServer.Send(NewMessage);
// 寄出郵件