發表文章

目前顯示的是 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位元osC:\Windows\System32\config\systemprofile64位元osC:\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 偵測與應用的擴充套件51degressMobile view engineiPhone模擬器http://blog.darkthread.net/post-2010-03-11-iphone-browser-emulator.aspxWindows 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:檢視隔離區的檔案Day2WCF 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:雙向溝通· Josnp+ScriptManager叫用WCF 或以jQuery存取Kinect for Windows - 體感應用程式開發入門曹祖聖· Code4Fun:…

適用在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的例外,
程式如下:
publicstatic Boolean CheckUrl(String uri){ Uri webAddress = new Uri(uri); WebRequest request = WebRequest.Create(uri);try { WebResponse response = request.GetResponse();returntrue; }catch {returnfalse; }}

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.aspxhttp://msdn.microsoft.com/zh-tw/library/dd992978.aspxDemo在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/24710http://www.cnblogs.com/ipusr/articles/619759.html什麼是PackagePACKAGE是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.34http://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.30319Step2.編譯你的網站或網站底下的應用程式,底下為網站及應用程式的語法參考a.編譯預設網站的虛擬目錄
aspnet_compiler -v /CLMWebvb.編譯-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\inetsrv3.appcmd migrate config "Default Web Site/MyWeb" Ps:站台/應用程式名稱錯誤2.ASP.NET尚未安裝或安裝不完整由於網站的Frameowrk是使用4.0,所以我先到IIS的功能畫面進入IASPI及CGI限制看4.0是否有啓用結果發現4.0雖已安裝但未進行啓用,如下圖解決方法: 透過命令啓用4.01.到命令提示字元2.cd C:\Windows\Microsoft.NET\Framework\v4.0.303193.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.共用端程式,新增一個共用介面IMyWCF3.WCF服務端程式,實作IMyWCF回傳使用者物件WCF組態設定4.Client端程式
透過實作ClientBase及共用層的IMyWCF來叫用WCFClient端組態設定執行程式寫的不清楚的地方、敬請見諒。範例下載http://cid-fab913153ae2ed86.office.live.com/self.aspx/.Public/Code/WCF/WcfRestSampleDemo.rar參考文章http://www.switchonthecode.com/tutorials/creating-a-rest-client-using-wcfhttp://www.dotblogs.com.tw/regionbbs/archive/2010/03/29/vs2010.wcf.4.rest.service.expose.aspx

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

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