今天在示範 MSBuild 如何設定 MvcBuildViews
屬性時,發現只要有 *.edmx
存在於專案中,建置的時候就會導致出現 Could not load type 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider' 的問題,這個問題想從 Visual Studio 2019 裡面很難看出個端倪,必須改用 MSBuild 才能看出脈絡。今天這篇文章,我將分享這個問題的細部分析,並提供解決方案。
... 繼續閱讀 ...
我們有個 ASP.NET MVC 專案上周在做程式碼安全性檢查 Code Review 時,發現開發人員在 Razor 頁面中使用了一些 @Html.Raw() 輸出未經 HTML 編碼的內容,正常來說,在 ASP.NET MVC 網站應用程式中,不應該太過頻繁地出現這種用法,所以只要看到就會特別查看一下,這才發現原來 Razor 從 V2 版開始,就存在著這個小問題 (Bug),所以大家還是要注意一下。
... 繼續閱讀 ...
ASP.NET MVC 3 開始提供的 Razor V1 改變了以往使用 WebFormView 的寫作習慣,讓我們在 檢視頁面 (View Page) 中的 HTML 與伺服器端的語法 (Razor) 混和得更漂亮,不再有醜陋的 <% … %> 符號了。然而從 ASP.NET MVC 4 開始,在 Razor 推出了第二版,有許多增強的特性,本篇文章將介紹這些增強的特性。而到了 ASP.NET MVC 5 推出了 Razor V3 版,這版只有修正一些程式錯誤,並沒有功能增強。
... 繼續閱讀 ...
由於 C# 6.0 採用全新 Roslyn 編譯器平台,想必有不少人躍躍欲試,基本上 C# 版本與 .NET Framework 版本並沒有絕對的關連性,像本次 C# 6.0 所提供的都是編譯器的特性,對 .NET Framework 的相依性沒有這麼大,因此無論你用 .NET Framework 4.5 或 .NET Framework 4.6 都可以使用 C# 6.0 進行編譯,只是在切換版本的過程中要小心,還是有些地雷會遇到,本篇文章整理了一些我曾經遇到的問題與解決方法,供大家參考。
... 繼續閱讀 ...
遙望十多年前,我剛出社會的時候,拿著我在大學時期接案的 74 件作品與大學四年的程式開發經驗進入職場,當時所學會的東西跟現在比起來可謂是九牛一毛,在累積了幾年的經驗之後,回頭看見有許多莘莘學子還在為了該學些甚麼而困擾,這便萌生這篇文章的契機,希望整理一些適合新手上路的學習資源,讓大家更有方向的踏入 .NET 開發生涯。
... 繼續閱讀 ...
如果你已經建立好一個 ASP.NET MVC 5,而又突然想要加入 ASP.NET Web API 2 的相關套件與設定檔,你可以參考本篇文章解說的 SOP 進行設定。所有步驟也都以 Git 進行版控,各位可以到 https://github.com/doggy8088/MVC5_Add_WebAPI 查閱每個步驟的變更紀錄。
... 繼續閱讀 ...
我曾經在【ASP.NET MVC 開發心得分享 (21):Routing 觀念與技巧】這篇文章中分享過幾個路由開發技巧,其中在【技巧 1:替 Routing 網址設立條件限制】的部分有示範如何透過簡單的 RegEx 規則運算式 (正則表達式) 來限制路由變數的內容規則。不過,通常你在網路上能查到的這些 路由限制 (Route Constraints) 範例,大多使用「正向表列」的方式進行比對,這的確在大部分開發情境下都是這樣用的,但在特定比較少見的開發情境下,你或許需要「反向表列」的方式來限定路由參數的比對規則,尤其是在 ASP.NET MVC 與 ASP.NET HttpHandler 混合執行的情況下,更容易遇到這樣的問題。
... 繼續閱讀 ...
最近因為有客戶要求將網站部署到 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)。
... 繼續閱讀 ...
上上禮拜同事在開發一個 ASP.NET MVC 專案時遇到一個詭異問題,就是在 View 裡面輸出超連結時竟然會多出詭異的查詢字串(QueryString),他使用標準的 @Html.ActionLink 輔助方法輸出 <A> 超連結時,竟然有些超連結的尾巴會加上 ?Length=4 這個查詢字串,但是在 ASP.NET MVC 的 View 裡根本就沒這樣設定。然而上週在台中教授 ASP.NET MVC 課程,竟然也有學員再次遇到相同的問題,我猜想這可能是初學者都會遇到的常見問題,特別寫文章來提醒各位。
... 繼續閱讀 ...
我去年寫過一篇【Visual Studio 2010 建置部署套件與 ASP.NET MVC 的衝突】文章,雖然當時已經知道怎麼解決,但是每次在 發行網站 (Publish) 或 建置部署套件 (Build Deployment Package) 後都要手動刪除 obj 目錄實在覺得很麻煩,今天狠下心研究出一個方法可以在 MvcBuildViews 之前「自動」刪除 obj 目錄裡那些會阻礙建置步驟的相關檔案。
... 繼續閱讀 ...
當我們想要限制或加長 ASP.NET 可執行的時間長度時,通常都會到 web.config 的 <system.web> 區段新增一個 httpRuntime 元素並且指派 executionTimeout 屬性一個秒數,像是我們在設定檔案上傳的程式時,由於上傳檔案的執行時間可能會超過系統的預設值( 110 秒 ),所以這時我們就必須把這個數值調大。當然你也可以將這個數值縮小,以免過多、過長的執行要求把伺服器拖垮。不過,在 ASP.NET MVC 裡有一個鮮為人知的秘密,那就是 ASP.NET MVC 根本不吃這套,預設執行時間是沒有上限的,所以你的 ASP.NET MVC 程式要是出問題,那可是會執行到天荒地老海枯石爛的,最慘的狀況就是 IIS 的 Request Queue 被塞爆。
... 繼續閱讀 ...
有寫 ASP.NET MVC 的人應該瞭解,當部署 ASP.NET MVC 網站時通常都必須先在伺服器端安裝 ASP.NET MVC 執行環境 (Runtime) 才能正常執行,這個安裝的步驟主要是將 ASP.NET MVC 組件註冊進 GAC (Global Assembly Cache) 中,這點安裝步驟其實還算容易,不過並不是所有系統管理者都願意幫你做這一步,所以若要將組件一一內嵌到 Bin 目錄下就必須特別設定,但 ASP.NET MVC 3 with Razor Syntax 的設定比 ASP.NET MVC 2 的設定複雜許多,今天我就來教各位一個最無腦的設定法,又快又精準的一次設定到好!
... 繼續閱讀 ...
ASP.NET MVC 預設在 Global.asax 所定義的 RegisterRoutes 方法中可以輕易的定義你希望擁有的網址格式,嚴格上來講這並非 ASP.NET MVC 的專利,而是從 ASP.NET 3.5 SP1 就加入的新特性,所以就算是傳統的 ASP.NET Web Form 一樣可以利用 Routing 所帶來的好處,今天我就來講一些 Routing 的觀念與技巧。
... 繼續閱讀 ...