The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何在 ASP.NET Web API 套用 ELMAH 錯誤紀錄模組

每個網站必備的 ELMAH (Error Logging Modules and Handlers) 模組,在使用 ASP.NET Web API 時卻無法自動套用,也就是說 ASP.NET Web API 執行的過程中發生任何例外,預設都不會自動寫入 ELMAH 指定的儲存區。那是因為 ASP.NET Web API 的主要用途是用來回應呼叫 RESTful API 的用戶端要求,為了不讓用戶端得到不符合 JSON 或 XML 格式的訊息內容,因此所有例外都會被 ApiController 基底類別給攔截,如果我們想在 ASP.NET Web API 實作錯誤紀錄,則必須透過 Action Filter 來設定。

... 繼續閱讀 ...

新書出版:〔ASP.NET MVC 4 開發實戰〕已於 12/20 上市

俗話說的好,有一就有二,無三不成禮。兩年多前出版了人生第一本書 ASP.NET MVC 2 開發實戰〕,獲得廣大開發人員的肯定與迴響,還曾經一度爬上天瓏排行榜冠軍,這些對我來說都是美好且難得的回憶。一年多前,也應邀翻譯了一本〔Windows Phone開發實戰〕書籍,還藉此提升了英文閱讀能力,也算有所收穫。今年,排除一切困難,在百忙之中抽空完成了前年這本書的改版,名為〔 ASP.NET MVC 4 開發實戰〕且已在幾天前正式出版上市,趁著這次新年四天年假,著實是看書的大好時機,大家加油! (^_^)

... 繼續閱讀 ...

ASP.NET Web API 無法輸出 Entity Framework 物件的解法

開發 ASP.NET Web API 時,如果專案使用 Entity Framework 技術的話,當 Entity 與 Entity 之間包含導覽屬性 (Navigation Property) 的話,在預設的情況下,ASP.NET Web API 在輸出 JSON 格式時,會引發一個 System.InvalidOperationException 的例外狀況,其錯誤訊息為「'ObjectContent`1' 類型無法序列化內容類型 'application/json; charset=utf-8' 的回應主體。」,若要解決這個問題,有幾個必須注意的地方,才能讓 ASP.NET Web API 正常且穩定的運作。

... 繼續閱讀 ...

Windows 下的 TEMP 目錄中檔案過多會導致系統效能驟降

上週,我們一個主機代管的客戶,因為客戶端機房搬遷的關係,我們幫客戶的主機關機並且移到另一個機房開機,但開機過後一、兩天,客戶回報主機有效能變差的情況,開啟網站首頁要等好幾分鐘才會出現畫面。當效能降低時,IIS 的反應時間會拉的很長,所以同時上線人數也會開始累積,只要重開 IIS 的應用程式集區就會解決效能問題,但主機的反應還是會頓頓的,我們的人查了好多天還是無法理解其始末,問題也為解決,直到有人提出了一個奇特的症狀 (symptom),這才讓我找到線索解決這次危機,欲知詳情,請繼續看下去…

... 繼續閱讀 ...

ASP.NET MVC 使用 Html.BeginForm 預設多載引發的問題

最近因為有客戶要求將網站部署到 Windows Azure WebSites 雲端平台,原本在開發環境測試都沒什麼狀況,反而是部署到 Windows Azure WebSites 之後才發現一個棘手的問題,一般網頁瀏覽並不會有問題,而是當使用 IE 瀏覽器,且有表單要送出資料時就會發生 502 - Web server received an invalid response while acting as a gateway or proxy server. 的問題,這才發現一個 ASP.NET MVC 的小臭蟲(Bug)。

... 繼續閱讀 ...

如何替 SQL Server 2012 LocalDB 卸載所有使用者資料庫

每次用 Visual Studio 2012 開發一個新的、有用到 LocalDB 資料庫的專案,只要專案執行起來,就會將資料庫自動掛載到 SQL Server 2012 Express LocalDB 的執行個體裡,所以用一段時間後自然也會有一堆資料庫在上面,但大部分資料庫應該都是可以卸載 (Detach) 的,因此我自己寫了一支 T-SQL 可以批次卸載所有使用者資料庫,以便看到一個乾淨的 LocalDB 執行個體。

... 繼續閱讀 ...

Exchange 若發生 451 4.4.0 DNS query failed 錯誤應如何處理

前陣子有好長一段時間公司內的 Exchange 就是沒辦法寄信到我公司一個合作夥伴的信箱裡,我公司裡的 Exchange 已經安裝超過5年了,第一次遇到這個問題,而且神奇的是,也只有這個合作夥伴的信箱有問題,每次只要寄信給他們總是被退信,都一定要改用 Gmail 寄信對方才能收到。相反的,對方也跟我說他們其他客戶沒有寄不進去的,只有我們有無法傳送郵件的問題。真的又看到鬼了,兩造雙方查了很久,也都互推自己沒問題,且事實也是如此,真像只有一個,這時我又柯南上身,最終查出個水落石出。

... 繼續閱讀 ...

解決 IE10 瀏覽器無法使用 ASP.NET 表單驗證登入的問題

今天凌晨在客戶端上線,當程式佈署到正式機後發現我們的網站唯獨只有 IE10 瀏覽器無法成功登入,任何其他瀏覽器版本或使用較低的 IE 版本都可以正常登入,使用 IE 相容性檢視也都可以正常登入,想說會不會又是罄竹難書的 IE10 搞的鬼。後來用 Fiddler 工具檢查後發現 IE10 送出的 HTTP 標頭完全沒問題,該有的 .AUTH Cookie 都有送出,但使用表單驗證機制 (FormsAuthentication) 就是無法判斷該使用者已經登入,還真的再次鬼打牆,最後還是研究出解決方法。

... 繼續閱讀 ...

使用 MSDeploy 部署網站時如何避免變更遠端目錄NTFS權限

由於我們許多專案都用 MSDeploy 進行部署,但最近因為 IIS 伺服器上的架構有所變更,卻引發專案進行部署時發生許多 NTFS 權限上的錯誤,也就是當網站部署之後,連本機系統管理者都無法透過檔案總管進入目錄的窘境,剛花了一個多小時研究,終於找到徹底解決此問題的方法。

... 繼續閱讀 ...