Windows驗證歷程觀察與Kerberos/NTLM判別
昨天談到IIS整合式Windows驗證會優先嘗試Kerberos,不行再改用NTLM,那麼如何得知現在用的驗證方式是哪一種?瀏覽器的F12開發工具雖然有HTTP往來記錄,但不會顯示驗證過程,因此,Fiddler才是最佳觀察工具。為了捕捉標本,我特地用Hyper-V架了AD,還學會用「setspn -a HTTP/機器名稱...
View Article【茶包射手日記】Windows睡眠、關機後風扇續轉
記錄這兩天遇到的鬼問題。【聲明】因處理過程龐瑣且某些操作屬不可逆,無法反覆驗證追出真兇,本文僅整理處理經驗供參。前陣子將家裡的PC升級成SSD,重灌Windows 10後,SATA硬碟傳輸速度有點怪(這是另一則奇妙故事,一言難盡,有機會再寫,此處略過細節避免失焦),主機板Asus P8H67-M...
View ArticleWindows驗證時成群出現的HTTP 401
前面我們介紹了Kerberos/NTLM驗證,也實地觀察過HTTP 401、401、200的歷程。登入網站只輸入一次密碼,想當然爾同一個身分驗證可用來存取後續的css、js、jpg、gif…...
View Article【茶包射手日記】NuGet Package Manager升級3.4.2.830後無法登入私服
同事報案,使用Visual Studio 2015 NuGet連私服時一直彈出帳號登入對話框無法連上(公司的NuGet私服設成Windows驗證),另一位同事與我卻無此問題。比對後發現大家NuGet Package Manager版本不同,出問題的同事是3.4.2.830,我是3.3.0.167,另一位沒問題的同事則是3.4.1。大膽假設:我們的NuGet...
View ArticleTypeScript的this偵錯陷阱
接獲同事報案追查TypeScript問題,二人一起陷入迷霧近20分鐘才恍然大悟…有段TypeScript程式自訂類別,在類別方法用this.PropName="..."修改自身屬性值(註:類似需求我習慣用self大法,寫成self.PropName="…"),偵錯時用瀏覽器F12開發者工具下指令檢查,卻發現this.PropName沒有被正確設定,我建議在程式碼加入console.log(this....
View Article【茶包射手日記】JS Bin的無窮迴圈保護機制
同事報案,用JS Bin跑迴圈計算從1加到n測試效能,發現 for 迴圈次數增加到100萬後加總結果不對,每次執行會得到小於正確值(499999500000)的隨機數字;但若不用for改用lodash _.times(),跑再多次結果也是正確的。為了調查,先將程式碼簡化到可重現問題的最精簡內容:var count = 1000000;var sum = 0;for (var...
View Article從Visual Studio發布NuGet Package的好幫手-NuGet Packager
最近在寫共用元件,打算放在公司的NuGet私服供同事下載安裝,換版時還可自動更新,大大降低管理成本。講到製作NuGet Packet,NuGet Package Explorer雖然方便,但畢竟是GUI工具,我希望修改元件並測試OK後,直接在Visual Studio專案按個鍵就自動上傳到NuGet伺服器。經過評估,找到一個好用套件-NuGet...
View Article安裝NuGet Package時在web.config加入設定
第一次嘗試需要在web.config設定appSettings的共用元件,因此打包NuGet Package時要多加入修改web.config的安裝腳本,其中有些小眉角,我摸索了一陣子才搞定,以下是心得分享。我要做的事是在appSettings裡新増一筆<add key="afa:WebApiUrl" value="Web API測試台網址" />,在NuGet...
View Article2016石碇馬
比起前兩年(2014、2015)搭配六月豔陽35度高溫燒烤,今年石碇馬辦在四月下旬,氣溫低了快十度,總爬升1600公尺又算得了什麼,二話不說又報了!今年氣侯異常,近四月底依然涼爽,氣象預報氣溫為18-26度,不過30%下雨的機率有點討厭,早晨出門還在下雨,但仍稱得上是不錯的跑馬天氣。大會會場在華梵大學,6:06起跑,比預計晚了幾分鐘。與賽人數不多(事後看完賽證明的統計數字,全馬跑者不及900人),是...
View Article【茶包射手日記】勿用UrlEncodeUnicode/escape
寫WebClient.DownloadString()時用了"some.aspx?t=" + HttpUtility.UrlEncodeUnicode("中文")寫法組網址及Query String參,遇到一些問題,學到一些知識,筆記之。先來個範例好說明。為便於測試,我寫了一個超簡單的ChkQueryString.aspx傳回Request.Url.Query檢查URL查詢參數:<%@...
View Article【茶包射手日記】Oracle Client版本與分散式交易
接獲報案,同事欲將測試網站移至新主機,遇到Oracle無法進行分散式交易的情況,得到以下錯誤訊息: Oracle.DataAccess.Client.OracleException Unable to enlist in a distributed transaction...
View Article克服入口網站內嵌其他網站之跨網站存取限制
文章標題有點饒舌難懂,直接說我需求就清楚了。我想在員工入口網站(例如:portal.utopia.com)加入人事、行政、會計、電子表單等現成網站功能,這些應用程式各有自己的網站(例如:webap.utopia.com),最簡單的整合方法是在入口網站放個Iframe將其他網站的網頁內嵌進來,兩分鐘搞定,用膝蓋就能完成。BUT,人生最機X的就是這個BUT!PM/老闆/使用者一定不會這麼簡單放過你,既然...
View Article【茶包射手日記】瀏覽器播影片有聲無影處理經驗一則
家裡的電腦出現奇怪狀況,發現Chrome看臉書影片時聲音、進度條正常,但畫面全黑,重新開機亦無起色。為了對照起見,做了以下測試:Chrome播放YouTube正常 IE播放Facebook影片跟YouTube畫面全黑 Edge播放Facebook影片跟YouTube也畫面全黑...
View Article閒聊-你敢不敢幫請假的同事編譯程式上線?
前幾天,參與的專案遇到緊急狀況,剛改版的系統有一段邏輯因正式台資料與預期不同而出錯,需要緊急換版,負責的同事因故無法即刻救援,改派我代打上陣。有一段時間沒參與,我對最新開發進度有點脫節,本次代打任務形同開發團隊的一次臨時抽考。在我的開發機器開啟Visual Studio,先從TFS版控抓回最新的程式碼版本(Get Latest Version),檢視問題程式的修改歷史(View...
View ArticleDapper出現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