在IIS上部署ASP.NET MVC項目

來源:互聯網
上載者:User

需求前言:最近會經常修改一些網站前端的內容,為了方便跟UI和產品交流,需要將自己修改過的頁面及時發布到測試機或者是本地的IIS上。而為了熟悉IIS的一些應用,所以先將項目發布在了本地IIS上,這其中遇到了一些問題,現在解決之後,就記錄下來,留待後用。

流程圖:

這裡如何啟用並配置IIS就不多說了,主要想記錄下來的是在試運行過程中所遇到的一些問題。

配置IIS的幾個關鍵點:
1.URL重寫模組,這個以前是ISAPI篩選器的功能,後來好像就改版了,都成模組化設計了。(URL rewrite 下載連結)
2.ASP.NET MVC項目有路由機制,所以不需要用到IIS中預設文件功能以及瀏覽目錄功能。
3.記得檢查應用程式集區的 .NET Framework版本,配置成v4.0版本。
4.身分識別驗證上一般不用管,IIS預設使用的是“匿名驗證”。

三大問題
1.試運行時無法正常訪問網站,報錯如下:
錯誤摘要
HTTP 錯誤 403.14 - Forbidden
Web 服務器被配置為不列出此目錄的內容。

主要原因本地項目的web.config 檔案出錯,缺少一行代碼,補上就好,代碼如下:

<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer> 

附上參考連結:點我

2.上面這個問題解決後,再次運行報CS0016未能寫入輸出檔案錯誤,這裡的問題是IIS所對應的組或使用者沒有訪問本地檔案夾C:\Windows\TEMP的許可權,進入到temp檔案夾的屬性視窗的安全選項卡,進行修改。

3.來自項目本身,這個涵蓋面就很廣了。我遇到的主要是兩個方面的問題:
3.1 來自JS檔案的邏輯判斷,用到了 documen.domain屬性,可以用該屬性獲得當前的URL中的伺服器名稱或是IP地址,以此來進行判斷,運行網站的目前使用者是否合法。

3.2 來自對網站中各個URL入口的設定。這裡有個背景交代:線上下調試時URL中的伺服器名稱一般都是 “localhost:連接埠號碼”,而線上上則會替換成相應的網域名稱,為了修改方便,有以下的設定方式:

web.config 檔案中:

<appSettings><!--網域名稱-->    <add key="Domain" value="http://localhost:7676"/>    <add key="Host" value="localhost"/></appSettings>

某靜態類中:

public static partial class WebUIHelper{    public static readonly string dominUrl = ConfigurationManager.AppSettings["Domain"];}

某頁面中:

@{    var hostUrl = WebUIHelper.dominUrl;}<a href="@(hostUrl)/***/">

綜上 發布到IIS上時記得 修改web.config檔案。

結語
1.全棧工程師是很厲害的。全棧工程師=基礎知識深厚+完善的機器模型+電腦網路+各種前後端語言。
2.不想瞭解產品邏輯的程式員當不了一名合格的工程師。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.