ASP.NET MVC | The Will Will Web

The Will Will Web

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

如何讓 ASP.NET Web API 無論任何要求都回應 JSON 格式

ASP.NET Web API 是新一代的 HTTP 網路服務開發框架,除了可以透過 Visual Studio 2012 快速開發外 (內建於 ASP.NET MVC 4 的 Web API 專案範本內),也非常適合用於各種跨平台的行動裝置上,如果你想開發 RESTful 應用程式,那麼使用 ASP.NET Web API 應該是挺理想的解決方案。不過 ASP.NET Web API 內建支援 JSON 與 XML 兩種輸出格式,並依據瀏覽器端送出的 Accept 標頭自動決定回應的內容格式,不過也因為這點讓有些 Web API 新手上路的開發人員來說似乎頗為困擾,本文將介紹如何讓 ASP.NET Web API 強迫回應 JSON 結果,以方便直接用任何瀏覽器都能看見 JSON 的執行結果。

... 繼續閱讀 ...

在 ASP.NET MVC 使用 @Html.ActionLink 所發生的詭異現象

上上禮拜同事在開發一個 ASP.NET MVC 專案時遇到一個詭異問題,就是在 View 裡面輸出超連結時竟然會多出詭異的查詢字串(QueryString),他使用標準的 @Html.ActionLink 輔助方法輸出 <A> 超連結時,竟然有些超連結的尾巴會加上 ?Length=4 這個查詢字串,但是在 ASP.NET MVC 的 View 裡根本就沒這樣設定。然而上週在台中教授 ASP.NET MVC 課程,竟然也有學員再次遇到相同的問題,我猜想這可能是初學者都會遇到的常見問題,特別寫文章來提醒各位。

... 繼續閱讀 ...

TechEd 中國 2011 微軟技術大會:ASP.NET MVC 3 性能優化

上週我獨身前往參加 Tech•Ed 2011 微软技术大会 擔任 ASP.NET MVC 3 性能優化 這門課的講師,從參與講師徵選到前往與會的過程都充滿著驚奇與震撼,總體來說實在不虛此行,且在這幾天裡也結交了不少新朋友,每個都是才華洋溢、百煉成鋼的「年輕人」,在中國這個大環境下還真培育出不少武林高手,也只有在這種會議裡才能一次見到那麼多高端的菁英份子,幸會、幸會。

... 繼續閱讀 ...

ASP.NET MVC 建置部署套件後無法 MvcBuildViews 的解法

我去年寫過一篇【Visual Studio 2010 建置部署套件與 ASP.NET MVC 的衝突】文章,雖然當時已經知道怎麼解決,但是每次在 發行網站 (Publish) 或 建置部署套件 (Build Deployment Package) 後都要手動刪除 obj 目錄實在覺得很麻煩,今天狠下心研究出一個方法可以在 MvcBuildViews 之前「自動」刪除 obj 目錄裡那些會阻礙建置步驟的相關檔案。

... 繼續閱讀 ...

ASP.NET MVC 開發心得分享 (22):關於 executionTimeout

當我們想要限制或加長 ASP.NET 可執行的時間長度時,通常都會到 web.config 的 <system.web> 區段新增一個 httpRuntime 元素並且指派 executionTimeout 屬性一個秒數,像是我們在設定檔案上傳的程式時,由於上傳檔案的執行時間可能會超過系統的預設值( 110 秒 ),所以這時我們就必須把這個數值調大。當然你也可以將這個數值縮小,以免過多、過長的執行要求把伺服器拖垮。不過,在 ASP.NET MVC 裡有一個鮮為人知的秘密,那就是 ASP.NET MVC 根本不吃這套,預設執行時間是沒有上限的,所以你的 ASP.NET MVC 程式要是出問題,那可是會執行到天荒地老海枯石爛的,最慘的狀況就是 IIS 的 Request Queue 被塞爆。

... 繼續閱讀 ...

如何讓 App_GlobalResources 裡的全域資源檔變成公開類別

在中大型的專案裡,通常會將一整個 Visual Studio 方案 (Solution) 切分為好幾個專案 (Project),在製作多國語系網站時有時也會想把資源檔移到另一個獨立了專案中,如此一來才能方便在日後更新這些多國語系資源設定,不過在 Visual Studio 裡面的 ASP.NET 專案新增資源檔時,其類別的存取等級預設為 internal class,如果直接拖曳到另一個專案就會導致在原本的專案無法存取到這個資源檔的情況,必須進一步設定才行。

... 繼續閱讀 ...

如何將 ASP.NET MVC 相依的組件一起部署到 Bin 目錄下

有寫 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 開發心得分享 (21):Routing 觀念與技巧

ASP.NET MVC 預設在 Global.asax 所定義的 RegisterRoutes 方法中可以輕易的定義你希望擁有的網址格式,嚴格上來講這並非 ASP.NET MVC 的專利,而是從 ASP.NET 3.5 SP1 就加入的新特性,所以就算是傳統的 ASP.NET Web Form 一樣可以利用 Routing 所帶來的好處,今天我就來講一些 Routing 的觀念與技巧。

... 繼續閱讀 ...

介紹好用 Visual Studio 2010 擴充套件:All-In-One Code Framework Sample Browser

Microsoft All-In-One Code Framework 又稱 1code,集結微軟開發平台中各個技術領域的範例程式碼,目前已經累積了超過六百多個含有完整且可執行的專案原始碼在上面,主要的目的就是用來幫助學習微軟技術的開發人員解決各種工作上常見的問題,而這些範例程式碼的產生都源自於 MSDN 論壇上、社交媒體或其他開發社群等提出的種種開發問題,並由微軟員工撰寫範例程式碼提供給所有開發人員下載參考、觀摩之用,這一切不但都是免費的,更重要的是:如果你覺得他們沒有你要的範例程式,你還可以提出需求,請微軟的工程師幫你撰寫範例程式,Oh~ My GOD~~

... 繼續閱讀 ...

手動升級 ASP.NET 2.0 網站至 ASP.NET 4.0 的標準作業流程

目前公司的專案已經越來越多使用 .NET Framework 4.0 版本,然後舊有的網站有時後要增加一些功能或新增的功能會用到一些 .NET 4.0 編譯好的組件時就非常麻煩,要不就是重新編譯參考的組件到 2.0 版(但不一定會編譯成功),要不就是將舊有的 ASP.NET 網站直接升級到 ASP.NET 4.0,我在 VS2010 上市發表會:Web 開發效率提昇 - ASP.NET 4.0 演講時有分享一些網站升級的注意事項,不過今天我特地將手動升級網站的完整過程記錄下來,讓各位按圖施工、保證成功!^_^

... 繼續閱讀 ...

ASP.NET MVC 單元測試系列 (7):Visual Studio Unit Test

透過 Visual Studio 裡的整合開發環境 (IDE) 結合單元測試開發是再便利不過的了,在 Visual Studio 開發工具中已經內建一套 Visual Studio Unit Testing 框架 (Framework),可以方便協助你開發各式單元測試或整合測試的程式,工欲善其事、必先利其器,要善用他就必須先瞭解他,否則還是會事倍功半的,本篇文章會著重在 Visual Studio Unit Test 框架的概要介紹與快速上手的注意事項。

... 繼續閱讀 ...

ASP.NET MVC 單元測試系列 (6):測試 Routing 路由規則

有了前 5 篇的觀念支持,我們要開始對 ASP.NET MVC 專案的各個部分進行單元測試了,接下來的文章就會是一篇一篇的單元測試開發技巧,如果各位還有觀念上不清楚的地方,我會再用其他文章來解釋模稜兩可的觀念,尤其是介於「單元測試」與「整合測試」之間的灰色地帶或 TDD (測試導向開發) 等觀念,我想總要先讓各位先打從心裡願意開始撰寫單元測試比較重要吧!今天的文章會講解 ASP.NET MVC 的 Routing 路由規則如何進行單元測試。

... 繼續閱讀 ...