Browse by Tags

【茶包射手日記】只能跑 32 位元的 AnyCPU .NET 程式
測試某個 COM+ 元件應用專案,開發者所附的範例專案測試成功,我自己新增 Console Application 或 Windows Form 專案則卡在找不到 Registry 無法執行。強烈懷疑與 x86/x64 有關,由於只有註冊 64 位元 COM+,專案跑 x86 找不到 Registry 是意料中事,但詭異之處在於我已確認過範例專案跟我新增的專案都是設 Any CPU 無誤,甚至放在同一個 Solution 測試,卻一個成功一個失敗。 實測將新增 WinForm 或 Console...
Posted 23 October 2017 07:29 AMJeffrey | with no comments 5,784
Filed under: ,
Dictionary 多執行緒存取衝突吃光 CPU
這是一個老鳥失足,程式沒寫好吃光 CPU 的故事。開始前推薦大家兩篇先修知識: WinDBG 應用實例:找出 ASP.NET CPU 100% 原因 ASP.NET CPU 飆高問題之傻瓜分析工具-DebugDiag Tools 接獲通報,某主機在離峰時段出現 CPU 維持 50% 高檔狀況,來源則是某個 ASP.NET AppPool Process。依照 SOP,先擷取 Memory Dump 後再重啟 AppPool。(提醒:建立 Dump 檔前需確認 AppPool 是 32 位元還是 64...
Posted 04 September 2017 11:11 PMJeffrey | with no comments 7,421
Filed under: ,
C# 連線 HTTPS 網站發生驗證失敗導致基礎連接已關閉
某台透過 .NET WebClient 物件爬網頁抓資料排程忽然出現: 基礎連接已關閉: 傳送時發生未預期的錯誤。 ---> System.IO.IOException: 驗證失敗,因為遠端群體已經關閉傳輸資料流。 The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Authentication failed because the...
使用 Process Explorer 查看 .NET Callstack
WinDbg 追查 CPU 飆高問題 一文發表後,在 FB 收到網友 Webber Han 回饋(在此感謝),提到射茶包利器 Process Explorer 也能像 WinDbg 一樣檢視 Callstack 中的 .NET 組件、函式資訊,查了一下,這是 2012 年 15.2 版就加入的功能,Lag 大了。 關鍵在於「Configure Symbols」有無設定妥當,Process Explorer 的 .NET Callstack 解析也是借助 WinDbg 完成,故機器要先裝妥 WinDbg...
Posted 28 February 2017 06:54 AMJeffrey | with no comments 5,412
Filed under: ,
【茶包射手筆記】Dictionary.Add()效能問題調查
依據 MSDN文件 : If Count is less than the capacity, this method approaches an O(1) operation. If the capacity must be increased to accommodate the new element, this method becomes an O(n) operation, where n is Count. 只要Dictionary資料筆數沒超過Capacity(Capacity可在建構時指定...
【茶包射手日記】.NET程式被判定不是有效的 Win32 應用程式
接獲報案,某隻.NET程式在本機測試正常,同一個EXE檔搬到特定幾台機器,一執行就出現"is not a valid win32 application"(中文版為"不是有效的 Win32 應用程式")。 問題機器為32位元Windows 2003,上面已經有多個.NET寫的排程程式運行中,檢查Windows\Microsoft.NET\Frameworks目錄,v1.0到v4.0.*資料夾都在,判斷已裝到.NET Framework 4.0,而另外寫一個簡單...
Posted 28 January 2015 10:27 PMJeffrey | with no comments 5,539
Filed under: ,
【茶包射手日記】EPPlus 3.1.2 Bug Fixing
發現EPPlus 3.1.2版Bug一枚。 開啟現有xlsx後,不做任何修改就儲存,再使用Excel開啟會出錯。例如以下範例: using (ExcelPackage p = new ExcelPackage(new FileInfo("通訊錄.xlsx"))) {      p.Save(); } 程式執行後使用Excel開啟重新儲存的通訊錄.xlsx檔案,會出現以下錯誤: Excel 在 '通訊錄.xlsx' 中找到無法讀取的內容...
Posted 05 December 2012 09:06 PMJeffrey | with no comments 13,859
Filed under: , ,
【茶包射手日記】LINQ過量載入陷阱及.NET記憶體限制
今天處理了一件.NET服務故障案件。有個.NET開發的Windows服務,其任務為每隔幾分鐘查詢資料庫,取出待處理的作業項目,依其指示執行相關動作。狀況為資料庫仍有大量待處理項目,但服務未如預期取回資料逐筆消化。 幸運的是,程式設計時已加入頗為詳細的Log機制,很快地在Log檔發現記憶體不足錯誤訊息: System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.   ...
【茶包射手日記】.NET 2.0 Runtime版本的祕密
今天遇到的案例,一個.NET 2.0開發的FTP上傳程式在A機器運作正常,移到B機器執行卻出現路徑錯誤: string ftpUrl = "ftp://blah.boo.boo.blahboo//folder/file.txt" ; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl); request.Method = WebRequestMethods.Ftp.UploadFile; request...
Posted 28 September 2012 07:18 PMJeffrey | with no comments 4,813
Filed under: ,
組件繫結重新導向鬼問題-版號高低之謎
又再一次被ODP.NET的版號問題搞得頭昏腦脹,某顆共用元件Blah.dll參考了ODP.NET 11.2,使用 組件繫結重新導向 (Binding Redirect)的技巧,在一些僅有ODP.NET 9.2的網站及開發機器上運作順暢,但相同做法在只有ODP.NET 10.2的機器上卻不管用,冒出"... has a higher version than referenced assembly ..."錯誤。而依過去的經驗,對繫結重新導向始終存在"有時可以,有時不管用"的混亂印象...
【茶包射手日記】詭異的Oracle Client錯誤
接獲報案,某台開發機器首次以.NET連接Oracle時出現問題(SqlPlus及PL/SQL Developer等工具運作正常),使用System.Data.OracleClient測試,在OracleConnection.Open()時彈出例外: System.Exception: OCIEnvCreate 失敗並傳回代碼 -1 但錯誤訊息文字不可用。    於 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection...
Posted 28 July 2012 11:58 AMJeffrey | with no comments 10,604
【茶包射手日記】.NET主控台應用程式出現"系統無法執行指定的程式"錯誤
同事報案,某支排程作業主控台應用程式(Console Application)忽然無法執行,持續出現: The system cannot execute the specified program. 系統無法執行指定的程式 爬文發現此訊息大多與 缺少VC++ DLL 有關,但這是支.NET程式,加上原本可以執行,必要DLL忽然消失的可能不高,推測應另有原因。 試著直接由檔案總管點選exe執行,蒐集更詳細的訊息。登楞! 凶手的背影出現了~~ 訊息指出是config檔有問題,同事此時也出來補刀--"的確是修改過config後才壞的"...
【茶包射手日記】FtpWebRequest奇案
同事報案,運作多時的FTP排程忽然故障,由Log來看,問題發生在FtpWebRequest在上傳及下載資料時,持續產生"The underlying connection was closed: An unexpected error occurred on a receive."(基礎連接已關閉: 接收時發生未預期的錯誤) 錯誤。 一般來說,這類錯誤多半與FTP伺服器本身或網路環境因素有關,手動下指令FTP實測一番通常便可真相大白,正打算"手到擒來",一試之下才發現自己太天真...
Posted 08 October 2011 01:16 AMJeffrey | with no comments 11,805
Filed under: ,
【茶包射手日記】SqlDataReader讀取FOR XML結果發生字元截斷
一段使用很久的程式今天忽然出錯,追查原因,是一段古早寫的 FOR XML 查詢出了問題。 程式用SqlCommand執行"SELECT ... FROM ... FOR XML RAW('Boo’)”,最近因資料異動,結果傳回超長的字串,透過SqlDataReader讀取時,只得到最前端的2,033個字元,XML內容被不正常截斷。 微軟有一篇KB310378 The XML data row is truncated at 2,033 characters when you use...
【茶包射手日記】不限條件選項之SQL組裝與資料庫OR運算特性驗證
在設計查詢介面時,下拉式選單是很常見的條件選取方式,而往往我們都會再加上一個"不限條件"選項,允許使用者不限制條件,列出所有項頁。舉例來說: 在設定查詢地區的下拉選單(例如: ddlArea),除了列出基隆市、台北市、台北縣、桃園縣...等各縣市Option外,常會再多一個"所有地區"選項,將Option Value設定='*',選取時表示不限定地區。在Server端,便要將這些篩選條件轉為SQL指令,如何將'*'視為不限地區...
更多文章 下一頁 »

搜尋

Go

<November 2017>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication