ASP.NET Web API 功能強大,可很便利的設計出以 REST 為風格的 API 介面 (RESTful APIs),且早與 ASP.NET MVC 專案整合在一起。但是當 API 越寫越多時,如果沒有一個好個 API 文件或程式碼範例輔助,也很有可能會演變成一場災難。這篇文章,主要是撰寫如何在一個完全沒有 ASP.NET Web API 的專案中,加入新的 ASP.NET Web API 控制器 ( ApiController ) 並自動產生 API 文件的步驟。
... 繼續閱讀 ...
昨天在【ASP.NET MVC 4 開發實戰】課程中,學員們發現了一個問題,就是在實作與測試 ASP.NET MVC 的 Routing (路由) 機制的過程中,發現有個功能有些人做得出來,有些人卻做不出來,當我前去查看時也沒立即發現問題癥結,中午休息的空檔終於找到的這個細微的差異之處,所以還是寫篇文章提醒正準備開始使用 .NET Framework 4.5 的 ASP.NET MVC 開發人員。
... 繼續閱讀 ...
在 ASP.NET MVC 使用 Entity Framework 資料庫先行開發模式 (Database-First Development) 的時候,因為所有 POCO (Plain Old CLR Object) 類別都會透過 *.tt 程式碼產生器範本自動建立,當我們想擴充資料模型時,勢必不會直接把驗證屬性直接寫在這些類別裡,而是在另一個部分類別檔案中,透過 MetadataType 屬性 (Attribute) 宣告一個 Metadata 類別 (又稱 Buddy Class)。另一方面,我們也會在資料模型的 POCO 類別的「建構子」方法中宣告屬性的預設值,但這時問題來了,如果我們在自動產生的資料模型類別中,已經宣告過「建構子」的話,那我們該如何在另一個部分類別檔案中再次「宣告」建構子呢?這就是這篇文章想要解決的難題。
... 繼續閱讀 ...
我曾經在【ASP.NET MVC 開發心得分享 (21):Routing 觀念與技巧】這篇文章中分享過幾個路由開發技巧,其中在【技巧 1:替 Routing 網址設立條件限制】的部分有示範如何透過簡單的 RegEx 規則運算式 (正則表達式) 來限制路由變數的內容規則。不過,通常你在網路上能查到的這些 路由限制 (Route Constraints) 範例,大多使用「正向表列」的方式進行比對,這的確在大部分開發情境下都是這樣用的,但在特定比較少見的開發情境下,你或許需要「反向表列」的方式來限定路由參數的比對規則,尤其是在 ASP.NET MVC 與 ASP.NET HttpHandler 混合執行的情況下,更容易遇到這樣的問題。
... 繼續閱讀 ...
各位可能曾經在 ASP.NET MVC 4 新增控制器且使用 Scaffold 範本時,遇到如下圖的錯誤訊息,這個錯誤訊息非常的奇怪,但真正令我疑惑的是,我自己在企業教學或在補習班教學的時候,在一班裡都會有 20% ~ 30% 的學員遇到,而我自己卻從來沒遇到過,所以之前都認為是「電腦出了問題」,換一台就好了,直到最近,我才真正找到原因,接下來就看我怎樣解決這個問題。
... 繼續閱讀 ...
今天有讀者反映我的書【ASP.NET MVC 4 開發實戰】講到 如何對 ASP.NET MVC 原始碼進行偵錯 這一個技巧時,照著書操作沒有成功,我自己重新試了一次,還真的沒辦法,這才發現事情沒有想像中單純,魔鬼總在細節裡,我今天又花了 6 個小時反覆研究、測試、分析,這才終於釐清為什麼以前可以,現在卻無法對 ASP.NET MVC 4 原始碼進行偵錯的原因。因此我打算轉載書中的內容,並加以更新、補充,好讓大家能夠完整且順利的將 ASP.NET MVC 4 原始碼加入到專案之中。
※本篇文章摘錄自筆者出版的【ASP.NET MVC 4 開發實戰】一書,並且更新部分內容!
... 繼續閱讀 ...
我幾乎每次在 ASP.NET 的教學場合裡都會提到在 ASP.NET MVC 專案中安裝 ELMAH (Error Logging Modules and Handlers) 的重要性,不僅僅是在開發環境或測試環境能夠收錄完整的錯誤訊息,即便在正式運行的網站也非常適合安裝 ELMAH 錯誤記錄模組。不過,當 ASP.NET MVC 網站的 web.config 設定為 <customError mode="On" /> 的情況下,由於 ASP.NET MVC 專案預設都會套用 HandleErrorAttribute 全域動作方法 (Global Action Filter),因此網站執行過程任何的例外都會被過濾掉,若不做特殊的設定還無法透過 ELMAH 取得錯誤紀錄,本篇文章將分享如何有效率的解決這個問題。
... 繼續閱讀 ...
俗話說的好,有一就有二,無三不成禮。兩年多前出版了人生第一本書〔 ASP.NET MVC 2 開發實戰〕,獲得廣大開發人員的肯定與迴響,還曾經一度爬上天瓏排行榜冠軍,這些對我來說都是美好且難得的回憶。一年多前,也應邀翻譯了一本〔Windows Phone開發實戰〕書籍,還藉此提升了英文閱讀能力,也算有所收穫。今年,排除一切困難,在百忙之中抽空完成了前年這本書的改版,名為〔 ASP.NET MVC 4 開發實戰〕且已在幾天前正式出版上市,趁著這次新年四天年假,著實是看書的大好時機,大家加油! (^_^)
... 繼續閱讀 ...
開發 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 正常且穩定的運作。
... 繼續閱讀 ...