ODP.NET 無法顯示 raise_application_error 自訂訊息
接獲報案,某 Oracle Package 使用 raise_application_error抛回自訂錯誤代碼與錯誤訊息(其中包含輸入參數以利偵錯),使用 ODP.NET 呼叫時理應可在 Exception.Message 看到自訂錯誤訊息,但某支程式出錯時卻只傳回錯誤代碼並抱怨找不到該代碼對應訊息:ORA-20001: Message 20001 not found;...
View ArticleLINE Notify / LINE Login 實作小問題整理
最近在評估網站故障的自動通報機制。LINE 在台灣普及率及依賴度都很高,是很適合的即時通知管道,由於只需單向傳送訊息,LINE Notify 免費且無人數上限,實作又比 LINE Bot 單純。去吧,LINE Notify 就決定是你了。David 老師有篇詳細的教學文,文章用 Postman示範 API 溝通細節,不難用 WebClient...
View Article2017 八卦山台地馬拉松
往年鳳梨馬(八卦山台地馬拉松)都是清明返鄉順便跑,今年因故沒依原訂計劃,只有一人獨行,難得地體驗「一個人小旅行」的滋味。土包子第一次在台北轉運站搭客運、投宿旅館、被台北車站內的指標搞到眼花潦亂,當偽背包客感覺也挺讚的,跟全家出遊感受完全不同…...
View Article超過一百萬個檔案的 NTFS 資料夾…
在 NTFS 資料夾放入超過一百萬個檔案,會發生什麼事?讀寫檔案會因此變慢嗎?Windows 會不會因此崩潰?相信很少人有類似經驗,也不會大費周章搞個 Lab 試玩,既然幸運親身體驗過,分享一下經驗。先說結論:在 NTFS 資料夾放超過一百萬個檔案基本上是可行的(這次遇到的案例超過 150...
View Article【茶包射手日記】Oracle DBLink 遇分散式交易出錯
Oracle 問題又來惹… Orz某 Package 原本執行正常,當被包入 TransactionScope 範圍啟動分散式交易會出現 ORA-24777: use of non-migratable database link not allowed 錯誤,爬文找到 Rico 的文章,提到 Procedure 使用 Non-Shared Database Link...
View ArticleODP.NET 12.1/11.2 並存環境發生找不到 OraOps12.dll 錯誤
是的,Oracle 問題又來了!(沒錯,我桌子旁邊的羚羊又更多惹…)Windows 2012R2 跑多個網站,從 ASP.NET 2.0、3.5、4.0 到 4.5.2 都有,還涉及多台 SQL、Oracle,Oracle 版本有舊有新,部分程式還用到了分散式交易。考慮 ODP.NET 12.1 無法與 Oracle 10.2 進行分散式交易,而新版共用元件多已改用 ODP.NET 12.1,只好...
View ArticleVS2017 Angular TypeScript 定義檔編譯錯誤
改用 Visual Studio 2017 好一陣子,維護修改 TypeScrpt+ Angular 專案都沒什麼問題。這兩天新起一個 ASP.NET 網站專案想寫個簡單的 Coding4Fun SPA,用 NuGet 裝好 jQuery、Angluar,順手也裝上 jQuery 與 Angular 的 TypeScript 定義檔,發現 Angular 定義檔冒出數十個 Cannot find...
View Article生活瑣記-201704
地板漏水維修樓下鄰居通報天花板漏水,漏水點靠近四戶交界,很難判斷水從何來。依水電師傅建議做了實驗,關水塔兼放空水管一整天,再觀察漏水是否止住即知結果。(好熟悉的手法,不管修水電、治病、抓 Bug 還是射茶包,原理都大同小異唄!)樓下回報,關水之後漏水就停了… Orz 很好,乖乖敲牆鑽地抓漏吧!二十年前裝修時沒留下水電佈線圖(當時要是有數位相機跟手機就好了,我相信 D 槽一定有滿滿的線索,但那可是...
View Article使用 Dapper 接收 Oracle Ref Cursor
沒實際遇到,但接連兩次被問到使用 Dapper 如何從 Ref Cursor 讀取結果,看來上天已強烈暗示我沒 PO 文分享,趕緊補上以免逆天遭譴。爬文找到的做法都是靠自訂 OracleDynamicParameter 處理 Ref Cursor 對應轉換,循著 Stackoverlow 討論找到一個 Gist 分享的現成版本,將 OracleDynamicParameter.cs...
View Article【茶包射手日記】問題 JS 導致 ASP.NET MVC 所有 View 無法顯示
查出某支 JavaScript 有錯,修改後更新到網站,沒想到整個 ASP.NET MVC 網站壞光光,所有 View 都無法顯示,出現如下錯誤:'/' 應用程式中發生伺服器錯誤。並未將物件參考設定為物件的執行個體。描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 例外狀況詳細資訊:...
View ArticleMS OracleClient 改用 ODP.NET 之數字型別差異
System.Data.OracleClient 被微軟宣告為過時不建議使用,是你知道我知道連獨眼龍都知道的事,硬要繼續用甚至會有效能懲罰。所以在維護舊專案時,看到還在用 System.Data.OracleClient 的程式,我都會順手換成 Managed ODP.NET。(若為 .NET 3.5 平台則只能用 Unmanaged ODP.NET)近日踩到小鐵釘一根。如下圖,程式原本使用...
View Article2017 三重馬
為達成上半年每月一的目標,報了前年跑過的三重馬,路線雖單調但好跑,補給花樣不多但平實,地點近加上報名費親民,算是鞏固業績的好選擇。前年遇到下雨,今年氣象預報是多雲到晴的好天氣…(抖)半馬晚十分鐘出發,全馬只有七百多人參賽,是我愛的「小而美」!六點起跑,起跑沒多久看到紅色朝陽,是跑馬族(或是公園養生操阿公阿媽)比一般正常人更有機會看到的景色。路線從三重重陽橋跑到八里媽媽嘴咖啡折返,來回...
View Article【茶包射手日記】VBScript ASC() 中文傳回 63
同事報案,某上古神獸古老 ASP VBScript 移至 Windows 2012R2 x64 主機後執行出誤,深入追查,問題出在執行 ASC() 解析中文字元一律傳回 63 (?)。首先聲明,ASC() 並不支援 Unicode,理應改用 ASCW() (參考:1 2),但舊程式汰換在即,能運行就不想投資時間修改重測。程式原本在 Windows 2003 x86 執行正常,一開始以為是...
View ArticleODP.NET 無法讀取 Oracle 欄位計算結果
同事報案,使用 Dapper + ODP.NET 呼叫某 Procedure,以 Ref Cursor 取資料時出現型別轉換錯誤,一路深入追查,發現問題跟是否用了 Procedure、Ref Cursor、 Dapper 都沒有關係,錯誤發生在 ODP.NET 層。有問題的查詢涉及幾個高精確度的欄位運動,經過一番簡化,我先找出用下列查詢可重現問題。使用 PL/SQL Developer...
View ArticleLINE 反斜線變日圓符號(¥)之謎
電腦版 LINE 輸入與顯示時老將磁碟路徑的反斜線符號「\」改成日圓符號「¥」,挺困擾的:推測可能與 Meiryo 明瞭體字型有關。如果你的 Windows 有安裝日文語言選項,以下網頁可證明在 Meiryo 字型中反斜線符號會變成 ¥。原因出在並不是每個國都使用 \ 作為路徑分隔字元,日本是用 ¥,而韓國則是用 ₩。參考 從維基百科找到日韓鍵盤配置圖範例,右上角 Backspace...
View Article使用 WebClient FTP 上傳檔案發生 553 錯誤
在 .NET 要 FTP 上傳檔案,最精簡有效的做法莫過於使用 WebClient,例如:using System;using System.IO;using System.Net; publicclass CSharpLab{publicstaticvoid Test() {string userName = "ftpAccount";string password =...
View Article閒聊:用 LINQ 還是自己寫 SQL?
前陣子在網路看到「該靠 EF(LINQ)還是自幹 SQL 語法(甚至一律轉成 SP)」 的討論,我的「個人偏好」挺明確-CRUD 可靠 EF/ORM 省工,複雜查詢或操作則走 Dapper自己寫 SQL。不過它只算是「偏好」,其效益因客觀條件劇烈變動,若無視開發者背景、人力資源配置、系統需求等各種因素,無限期支持 OOO 一定比 XXX...
View ArticleCSV 轉換利器-ServiceStack.Text
做專案免不了遇到匯出或讀取 CSV 的需求,將物件轉成逗號分隔字串看似小菜一碟,用 C# 串字串也能搞定,但魔鬼在細節裡:字串值如包含逗號就要用雙引號包夾,遇到雙引號要置換成兩個雙引號,如果字串內容有換行符號更是讀取識別時的一大挑戰… 不管是匯出或解析 CSV 都得費不少力氣。最近發現一個處理 CSV 的強大元件-ServiceStack.Text 的...
View Article花 8.29 英鎊拯救世界,WannaCrypt 勒索病毒中場休息
好戲劇化的發展,震驚全球的 WannaCrypt 勒索病毒(嚴格來說是蠕蟲),在一位英國資安研究員註冊某個網域名稱後,中止了第一波攻擊。(讓我想起電影世界大戰裡莫名烙賽停擺的外星人)照片來源:http://thestagblog.com/tuesdayapocalypse-waroftheworlds/相信大家應該都從各大媒體看到報導了,WannaCrypt...
View Article