發表文章

目前顯示的是 2011的文章

解決Office轉成pdf在WindowService不能執行

問題 這兩天把撰寫好的Office轉成pdf程式搬到WindowService執行,執行後程式會hand住, 在工作管理員看到的winword.exe記憶体不斷升高,查看程式後發現 wordDocument = wordApplication.Documents.Open(ref pSourceDocPath);回傳的是null,但word程式卻有在背景執行, 以致wordApplication在關閉時整個會卡住,上網查了些相關文章,大部分寫的是 Microsoft.Office.Interop不能在WiindowService執行,幸好在快放棄時找到了一個很奇怪的方法,一試 之後竟然可以成功.....這真是太神奇了。 解決方法 在以下路徑建立"Desktop"資料夾 32位元os C:\Windows\System32\config\systemprofile 64位元os C:\Windows\SysWOW64\config\systemprofile 以上我在window7 64位元及window2008r2 64位元 測試成功 參考文章 http://www.go4answers.com/Example/word-automation-through-windows-service-171373.aspx

Tech Day2011筆記

圖片
Day1 .NET 開發技術 2011 綜覽與活用 吳宏彬 Mobile 偵測與應用的擴充套件 51degress Mobile view engine iPhone模擬器 http://blog.darkthread.net/post-2010-03-11-iphone-browser-emulator.aspx Windows Phone SDK 7.1 關鍵報告 I II :認識 Mango 新增 API & 開發工具大進化 董大偉 · Tile 客製化及動態新增 · Application Tile:使用者自行釘選 · Secondary Tile:使用程式新增 · Push Notifycation:跟Push Notifycation要求 Url 後存放在自己的 Server ,由 Server 發送訊息給 Push Notifycation後再轉給手機 · Background Audio:背景音樂執行,需實作相關介面 · Background Transfer:背景檔上傳下載 · Task排程工作:分為完全沒使用手機才會通知及定時通知。 · ShellToast 訊息通知:為背景工作的訊息通知。 · LocalDatabase :使用Linq To SQL,個人認為直接使用物件序列化會好用得多。 · IsolateStorage Explorer:檢視隔離區的檔案 Day2 WCF 4.0 企業級服務開發及實戰 張書源 · 組態簡化,預設已繼承相關的基本設定 · Behavior不加Name 為全域設定 · 更新預設的Binding:透過ProtocalMapping區段如下 <ProtocalMapping><add Scheme="http" binding="wsHttp"../> · AppFrabic:IIS 套件管理WCF · IIS7.5進階設定:設定支援TCP/IP 例:http,net.tcp · WCF 路由服務:用來作新舊版服務的轉接及使用BackupList 當服務停掉時由BackupList內的服務補上。 · Dicovery服務探索 · WebSocket:雙向溝通 · Jo

適用在SilverLight的byte與字串互轉

在SilverLight使用WebClient對Server端叫用網頁(.aspx or .ashx)取回Binary時,若網頁丟出例外, 在SilverLight收到的例外會是"遠端伺服器傳回一個錯誤: NotFound。 這樣的訊息在Client端根本不知道是發生什麼事,所以改成回傳一份訊息byte,寫法如下 Server 端 byte[] byteArray = System.Text.Encoding.Default.GetBytes(str); Response.Clear(); Response.BinaryWrite(byteArray); Response.End(); SilverLight string str = System.Text.Encoding.Default.GetString(byteArray); 但...此行程式在SilverLight不支援,所以無法使用。 參考別人寫的可以使用Base64轉,但..中文字不能轉,所以我沒用。 http://wincn.org/post/330.html   最後參考小朱的一段Byte與字串互轉的程式,測試後互轉沒問題 Server 端 byte[] byteArray = Encoding.UTF8.GetBytes ("發生例外!"); Response.Clear(); Response.BinaryWrite(byteArray); Response.End();   SilverLight byte[] byteArray = new byte[e.Result.Length]; e.Result.Read(byteArray, 0, byteArray.Length); string errorMsg= Encoding.UTF8.GetString (byteArray, 0, byteArray.Length);

mp4檔案下載發生404NotFound

圖片
今天同事反應一段下載檔案的程式碼,下載mp4時會發生404Not Found的例外, 程式如下: public static Boolean CheckUrl(String uri) { Uri webAddress = new Uri(uri); WebRequest request = WebRequest.Create(uri); try { WebResponse response = request.GetResponse(); return true ;   } catch { return false ; }   } Ps:在IIS或IISExpress測試才會發生錯誤,用VisualStudio預設的虛擬伺服器,是不會發生的。 本以為是檔案太大,但找了一個3mg的檔案測試,也是一樣錯誤,後來想到這好像Mine type 在iis上沒註冊。 解決方法 加入設定,副檔名:.mp4 MINE類型:video/mpeg IIS6設定 IIS7設定

[ASP.NET4.0]Url Routing Demo

圖片
4.0的新功能,主要功能為可以自訂網頁的Url,讓Url更容易識別。 詳細介紹請參考如下: http://www.dotblogs.com.tw/regionbbs/archive/2010/01/20/asp.net.4.0.new.feature.seo.improvement.aspx http://msdn.microsoft.com/zh-tw/library/dd992978.aspx Demo 在Global.asax 或Module 註冊Rotute 導頁方法 取得Route的參數值 測試結果 原始URL 透過Route

Oracle安裝出現unable to create an item in windows start menu or desktop

圖片
剛Setup好的Win2003 主機,安裝OracleClient後出現如下圖

[Script]解決開視窗會變開在頁籤

圖片
前言 在目前各大主流的瀏覽器(IE9、Chrome、Firefox..),在用超連結(target=_blank)或用Script下 wndow.open(),預設都會將網頁開在新的頁籤上,因為這樣,本來的程式有些功能是讓使用者 開新視窗取得資料帶回,便會造成使用上的不方便,而真要開窗的話是可以 調整瀏覽器上的設定,但總不能叫使用者一個一個調...,幸好google了一下有找到解決方法。如下: 語法格式: <a onclick="window.open(this.href,'demo','toolbar=no');return false" href="http://www.google.com" >POP UP</a> 參數注意: Ps:在IE9、Chrome、Firefox測試都是Ok的 參考網址 http://www.levitical.org/post/IE9-WindowOpen-fails-when-title-string-contains-spaces.aspx

[SQL Azure]資料庫匯入注意事項

圖片
本文記錄若要將本地資料庫的資料匯入SQLAzure時的相關動作 產生指令碼 重點1.產生結構及資料 重點2.選擇SQLAzure的類型 Ps:此選項好像只有SQL Server2008R2 才有

Oracle使用函數及PACKAGE回傳資料集

圖片
前言:    今天在寫Oracle相關程式時,一時興起,研究一下如何使用函數或預存程序回傳 結果集,參考了底下2篇文章,是使用Package來回傳。 http://vongates.itpub.net/post/2553/24710 http://www.cnblogs.com/ipusr/articles/619759.html 什麼是Package PACKAGE是PROCEDURE、FUNCTION的集合,意思為2種都可以寫在裡面,再依條件叫用。 PACKAGE包含兩部份,一個為規格(宣告與變數)、另一為實作(BODY)。   PAGEAGE實作: 1.建立PACKAGE規格,宣告函數、預存程序、宣告變數,本例只使用函數 2.建立PACKAGE主體 3.程式如何取回資料集 上方的範例測試OK後,心想那直接用函數應該也行吧,所以再用了一個函數來測試後,果然也可以取回資料集。 函數實作: 1.建立函數,內容同上PACKAGE BODY內的FUNCTION寫法 2.程式如何取回資料集 最後…..撰寫工具也很重要,之前是使用AquaStudio去撰寫OracleSql,但寫函數及預存程序 都會出現語法錯誤的編譯,所以我改用由oracle提供的Oracle sql developer 目前是3.0.04.34 http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

檔案上傳超出限制的處理作法

圖片
老生長談...整理一下相關作法: 當你使用 FileUpload 上傳超過 4MB 的檔案時,可能會面臨無法上傳的問題。這是因為上傳內容 的長度超過了maxRequestLength 參數在 Machine.config 檔案所定義的預設上限值 4096 (4 MB),這個限 制是 ASP.NET 為了要預防可能的「拒絕服務」攻擊。你可以在 Web.config 檔案中,覆寫應用程式 maxRequestLength 的值,例如: 但是,只要上傳檔案超過 Web.config的maxRequestLength 設定,用戶端就會收到以下的錯誤訊息: 「無法顯示網頁:找不到伺服器或 DNS 錯誤」。如果你要在Page處理這個錯誤將會徒勞無功,因為這是屬於 Application 層級的錯誤,也就是 ASP.NET 早在執行你的網頁程式碼之前,就已經拋出「超出最大的要求長度」的例外。 比較好的處理方式自訂WebModule註冊BeginRequest事件處理常式,在檔案未上傳前,先檢查 HTTP 標頭內容的長度,如果超過 maxRequestLength 的設定値,便將用戶端重新導向導引到自訂的錯誤頁面或導回原來的網頁。程式如下 組態設定如下,須注意IIS6與IIS7有部分不同,IIS7的Module須放在System.WebServer內,並先將maxAllowedContentLength設大點 ,否則只要超出預設值4mb就連BeginRequest都不會觸發 上述的完成後,若你在VisualStudio上是無法成功導頁的,還是會出現反白畫面, 只能在IIS 或裝IS7.5 Express上測試此結果 部分內容引述: http://renjin.blogspot.com/2008/03/large-file-uploads-in-aspnet.html

如何使用aspnet_complier.exe讓網站第一個瀏覽變快

圖片
   前陣子User反應每天第一次執行某支程式都要等很久,本來一直以為是在資料第一次 載入Cache造成緩慢的問題,後來經測試後是因為該支程式的UI相當複雜,並使用 相當多的UserControl造成的。至於為何在第一次載入緩慢,這是因為在程式更新到網站後,是要等到網站的第一個使用者對該程式發出Request後,IIS才會將相關程式編譯成*.complier的副檔名檔案到 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\你的網站或虛擬目錄 以本例來說,就會產生很多*.ascx.complier的檔案而造成第一次要求的緩慢,而第二次執行後 就會飛快許多,但若你的網站只要bin底下的dll只要任何一個被更新過,那第一次編譯的動作就又要重來一次。 解決方法 使用aspnet_compiler來幫IIS對網站內的所有程式進行編譯。 Step1.在命令提示字元切換到對應的Framework版本目錄 Cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 Step2.編譯你的網站或網站底下的應用程式,底下為網站及應用程式的語法參考 a.編譯預設網站的虛擬目錄 aspnet_compiler -v /CLMWebv b.編譯-m對應路徑的網站,以下紅字5為網站的識別元,可以參考下圖的對應 aspnet_compiler -m /LM/W3SVC/ 5 /ROOT 執行完後你可以到Temporary ASP.NET Files 內查看對應的目錄,就會產生如下圖一堆看不懂的檔案XD ,這樣就大功告成囉 參考文章 http://msdn.microsoft.com/zh-tw/library/ms229863(v=vs.80).aspx

網站從IIS6.0移轉至7.0後除錯經驗-2

圖片
今天同事又遇到我自己也覺得奇怪的問題,執行程式出現不認得 System.web.extension的區段 網站也確認是使用Framework4.0,照理說4.0會繼承C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config 的設定,所以在自己網站ConfigSection是不用設定的,找了相關方法都無法 解決,最後索性將machine.config屬於System.web.extension的區段 Copy過來。 果然執行後就正常了,所以此篇....待更正確解答=.=

網站從IIS6.0移轉至7.0後除錯經驗-1

圖片
前言 將原本在Win2003的網站移至WIN2K8 IIS7.0後,出現的一些錯誤,排除方法整理如下: 錯誤1.httpModule及httpHandler要移至system.webserver底下 解決方法: 透過命令自動將組態作移轉動作,步驟如下 1.到命令提示字元 2.cd C:\Windows\System32\inetsrv 3.appcmd migrate config "Default Web Site/MyWeb" Ps:站台/應用程式名稱 錯誤2.ASP.NET尚未安裝或安裝不完整 由於網站的Frameowrk是使用4.0,所以我先到IIS的功能畫面進入IASPI及CGI限制看4.0是否有啓用 結果發現4.0雖已安裝但未進行啓用,如下圖 解決方法: 透過命令啓用4.0 1.到命令提示字元 2.cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 3.aspnet_regiis /ir,執行後如下圖 錯誤3.Module的Key重複 解決方法:在iis最上層的設定有UrlRoutinModule-4.0及ScriptModule-4.0 所以若網站是設在[預設的網站]的子應用程式,則需將此2個Module拿掉或更名

[WCF-REST]Cilent端叫用不使用服務參考

圖片
前言 WCF中的REST服務,最令我覺得特別的是Client開發端可以不用[服務參考],就可以直接透過Uri去作存取, 但麻煩的是Client端直接使用Uri叫用時就要知道要傳什麼樣的Url Format以及回傳什麼樣的格式(例:xml、json...) ,萬一服務端的設定改了,在Client是無法在設計時期知道的,如下範例 WCF端 Client:使用WebRequest取回Stream的資料並作反序列化回User物件 上述若WCF端改了參數,則Client端無法知道,當然你也可以使用[服務參考]產生WCF參考來解決,如下圖 而若你不想用[服務參考]的話,另外一種作法就是讓Clinet端也去實作與WCF服務相同的介面。 範例說明 1.專案架構 2.共用端程式,新增一個共用介面IMyWCF 3.WCF服務端程式,實作IMyWCF回傳使用者物件 WCF組態設定 4.Client端程式 透過實作ClientBase及共用層的IMyWCF來叫用WCF Client端組態設定 執行程式 寫的不清楚的地方、敬請見諒。 範例下載 http://cid-fab913153ae2ed86.office.live.com/self.aspx/.Public/Code/WCF/WcfRestSampleDemo.rar 參考文章 http://www.switchonthecode.com/tutorials/creating-a-rest-client-using-wcf http://www.dotblogs.com.tw/regionbbs/archive/2010/03/29/vs2010.wcf.4.rest.service.expose.aspx

前端Script如何存取SilverLight內的物件

圖片
功能:讓前端的Script可以即時與SilverLight應用程式作資料的存取互動 1.類別及屬性需加上Scriptable的Attribute