Dapper出現sql_variant is incompatible with ntext
有個古老資料庫,裡面還有NTEXT型別欄位(SQL 2005加入NVARCHAR(MAX)後,應該沒人想用TEXT/NTEXT了),用Dapper執行一段SQL更新NTEXT欄位,發生古怪錯誤。指令如下:cn.Execute("UPDATE SomeTable SET NTextField = @data WHERE Id = 1", new { data = "…"...
View Article小密技-在IIS主機現場撰寫測試ASPX偵錯
ASP.NET Web Application Project(WAP)與 Web Site Project(WSP)之間有一段有趣的消長演進:ASP.NET 1.0/1.1時代的ASP.NET網站要先編譯成DLL才能執行,稱之為Web Application Project;ASP.NET 2.0起推出Web Site...
View ArticleNLog問題偵錯技巧
NLog是我們開發團隊的奧林匹克指定Log元件,但經驗裡遇過不少次沒有寫Log檔的狀況,而NLog為了避免寫Log過程出錯導致主程序中斷,預設不會拋出錯誤訊息,這讓NLog茶包特別難找。過去較常見問題是對Log資料夾缺少寫入權限(尤其是IIS 7.5+會用IIS...
View Article首遇TFS自動合併出錯案例
換用TFS版控時我們開始採用「多重簽出」原則,大幅改善VSS時代「專案一被人簽出其他人就動不了」的困擾。但隨之而來的副作用是:多人同時修改,若簽入時別人已先簽入更新的版本,就需要執行程式碼合併。在我們的經驗裡,TFS有個神奇又方便的「自動合併」功能,只要程式修改幅度不大,沒有改到同一段程式,TFS幾乎都能正確自動合併,不需人為介入,少數難以判別的情況才會跳出提示要求人工處理。但時間久了,我不免懷疑,...
View Article【茶包射手日記】MSBuild.ILMerge.Task發生型別重複錯誤
讀者Peter回饋一起MSBuild.ILMerge.Task合併錯誤案例:專案引用Manatee.Trello.WebApi套件,其依賴Microsoft.AspNet.WebApi.Client.5.2.3(System.Net.Http.Formatting.dll)及Microsoft.AspNet.WebApi.Core.5.2.3(System.Web.Http.dll),合併時出現錯誤...
View Article【茶包射手日記】無法使用別名登入本機IIS
前陣子研究出克服入口網站內嵌其他網站跨網站存取限制的方法,實際會用於整合兩台以上網站,但在開發測試期間也要搞兩台機器太麻煩,於是我用了點技巧,在windows/system32/drivers/etc/hosts加入額外設定:127.0.0.1 portal.dev.net 127.0.0.1 webap.dev.net 127.0.0.1...
View Article【茶包射手日記】詭異的Oracle Client 32/64版本錯誤
同事報案,某台測試機器原本只裝Oracle Client 32位元版本,因該主機上的SQL Server x64需建Linked Server連Oracle,故加裝了Oracle Client 64位元版本[參考]。不料,同主機用System.Data.OracleClient讀資料的網頁,在安裝Oracle Client 64位元版後,忽然冒出Oracle 32/64版本不符的經典錯誤:An...
View Article使用Fiddler竄改網頁內容進行測試
瀏覽器F12開發者工具內建的網頁封包分析功能日益強大,但老牌HTTP封包傳輸偵錯神器-Fiddler,還是有不少獨門絕活為F12工具遠遠不及,例如先前研究NTLM與Kerberos驗證時用到的Inspector/Auth資訊分析。今天則介紹Fiddler另一項少為人知但強大的功能-AutoResponder。用F12工具修改網頁DOM、CSS,甚至JavaScript都不是問題,但只能在網頁載入後事...
View Article【笨問題】IIS HTML、圖檔傳回空白內容
家裡的Windows 10不常用來開發,前陣子寫MVC測試入口網站內嵌其他網站跨網站還正常,但在IIS放個test.html時,卻出現奇怪現象。使用瀏覽器存取test.html,內容一片空白。怕是新增的網頁有問題,用IIS wwwroot原本就有的iisstart.png總該OK吧?登楞~一樣傳回空白。開啟Fiddler偵錯,進行幾個對照測試,觀察到結果如下:存取png及html時傳回HTTP...
View Article搞懂X-UA-Compatible IE相容設定
始終沒認真搞懂X-UA-Compatible IE=7跟IE=EmulateIE7有什麼不同,最近專案要步入「古今合壁」的偉大工程,把許多IE Only的活化石網頁跟HTML5網頁摻在一起做瀨尿牛丸,再不弄清楚恐會死得難看,於是查了文件做了實驗,筆記備忘。MSDN文件 Defining document compatibility所有IE包含三種文件模式:Standard Mode(標準模式)...
View ArticleIE11、XML Data Island與VBScript
前文提到眼前的棘手任務是在HTML5網站整合活化石等級的ASP(是的,就是ASP!不是ASPX),其中一大挑戰是ASP網頁裡大量使用XML Data Island與VBScript,能不能與HTML5並存是未知數,心中最理想結果是以IFrame內嵌ASP,大草原上羚羊跟迅猛龍一起快樂奔跑,世界真美好~當然,最後證明這只是不切實際的幻想,真實上演的是迅猛龍趕羚羊咬羚羊的慘烈場景 orz試著在HTML5...
View Article【邏輯來找碴】燕麥有農藥好可怕?
這兩天關於大燕麥有則大消息:衛福部食品藥物管理署抽驗市售36件燕麥片產品,有10件燕麥片驗出含有年年春,含量為0.1ppm(百萬分之一)到1.8ppm。食藥署要求違規業者應在收到下架通知的72小時內完成下架。頓時社會一片嘩然,媒體大幅報導(查了一下,Google新聞有101則呢),大家爭相走告,群情恐慌。身為大燕麥重度食用者,我也收到好多來自同事朋友的關心,但在了解始末之後,我只想說「茄!這不科學啊...
View Article2016海山馬
唯一留下落馬記錄的海山馬,對我有不一樣的意義,雖然去年已雪恥,但麥克阿瑟將軍說過「Pick yourself up from where you’ve fallen… at least twice.」「從哪裡跌倒,就從哪裡爬起來......
View ArticleSQL效能調校經驗一則
使用者報案,某網頁效能變得奇慢無比,簡單的上線公告查詢耗時超過兩分鐘,追查後抓出問題查詢如下例:selectcasewhenconvert(varchar,u.StartDate,108)='00:00:00'andconvert(varchar,u.EndDate,108)='00:00:00'thenconvert(datetime,convert(varchar,u.EndDate,111))...
View Article【茶包射手日記】TypeScript MSBuild編譯失敗
接獲報案,專案修改無法使用TFS Build Service編譯,錯誤訊息如下:D:\Works\1\BLAH\src\Web\Scripts\Foo.ts (112): Build: 'let' declarations are only available when targeting ECMAScript 6 and...
View Article【獅子鬃毛】臉書官方承認竊聽使用者日常談話?
又在報紙看到聳動標題「臉書驚爆竊聽門 官方承認用APP蒐集用戶隱私」,消息來自一篇標題更聳動的Blog文章「臉書版竊聽風雲...
View ArticleEntityFramework SaveChanges時出現OriginalValues取值錯誤
使用Entity Framework新増資料,SaveChanges()時出現以下錯誤:System.Data.Entity.Validation.DbEntityValidationException: Validation failed for one or more entities. See 'EntityValidationErrors' property for more...
View Article【水電工日記】瓦斯爐點不著,鬆手就熄火
聲明在先,瓦斯爐維護一定有風險,大家請審慎衡量,若無把握或不想冒險,建議請專業師傅處理較為妥當。本文純為經驗分享,恕不負任何責任。家裡的瓦斯爐有一爐打火困難,就是傳說中「旋鈕點火,一鬆手火就滅」的常見問題,近來情況日益惡化,壓著有火,鬆手就滅,一搞三五分鐘,水都快燒開了還點不著。先說說「一鬆手火就滅」的原因。近代瓦斯爐基於安全考量,都有加裝熄火自動切瓦斯的安全裝置,原理是在爐嘴安裝一枝探針型「熱電偶...
View ArticleASP網頁IE9相容拉皮筆記
整合清代ASP的工作持續進行,上回提過用IFrame內嵌ASP網頁時,父網頁與IFrame必須為同樣的IE模式,若父網頁要採HTML5時代寫法,就得考量各程式庫的IE最低版本要求,例如:KendoUI為IE8以上、AngularJS 1.3+需要IE9,再加上XML Data...
View Article淺談IFrame式Clickjacking攻擊與防護
用IFrame內嵌其他網頁是很常見的整合技巧,兩個獨立開發網頁可分別使用,有需要再合體,被內嵌的網頁配合移除頁首頁尾只留內容,看起來天衣無縫,省事又方便。大家猜猜以下HTML寫法會有什麼結果,網頁上有一小塊出現Google首頁?<!DOCTYPEhtml><html><head><metacharset="utf-8"><metaname="vi...
View Article