[ASP.net WebForm] 在Windows7上架ASP.net網站(適用WinServer2008)
說明以下的Demo 環境
OS:Windows 7 64bit
DB:SQL Server 2008 (和IIS在同一台電腦上)
1. 要在Windows7上架ASP.net網站前要先啟動安裝IIS
控制台>程式和功能>開啟或關閉Windows功能
然後按「確定」
2. 使用Windows系統管理員的權限,安裝.net framework(本Demo待會要架.net4開發的網站,所以以.net framework4為例)
Microsoft .NET Framework 4 (獨立安裝程式)
※如果1、2步驟安裝相反的話,請這樣做
打開『命令提示視窗』,到『C:\Windows\Microsoft.NET\Framework64\v2.0.50727』和『C:\Windows\Microsoft.NET\Framework64\v4.0.30319』底下,
輸入『aspnet_regiis -i』向IIS伺服器註冊.net framework
(如果不確定當初1、2步驟安裝順序的話,也可以執行以上指令)
3. 因為要讓外部連到網站
所以到控制台>Windows防火牆>進階設定
左方「輸入規則」把80 port打開(實務上這裡指的是AP Server)
因為實務上,AP Server架網站,DB Server架SQL Server
所以接下來假設網站要存取另一台電腦上的SQL Server
所以DB Server的Port(預設1433)也要打開
請在DB Server的電腦進到Windows防火牆>右方「新增規則」
選「連接埠」
輸入「1433」
「允許連線」
規則名稱請自行命名
如此Windows防火牆的設定完畢。
4. 接著要再設定SQL Server組態,讓它可以允許網站程式連接SQL Server
(實務上,這裡是DB Server的操作)
確保以下SQL Server和SQL Server Browser都有執行
Shared memory、TCP/IP、具名管道都有啟用
SQL Server網路組態的TCP/IP>內容
IP位址>TCP動態通訊埠清空>TCP通設埠設1433後按「確定」
3和4的步驟完成後,網站和SQL Server應該就可以溝通了.
5. 架設ASP.net 站台
系統管理工具>IIS管理員>新增網站
※因為我曾經遇過客戶提供的環境把系統管理工具隱藏起來(自訂開始功能表也找不到)的狀況,所以再提供一個找到IIS管理員的方法:
我的電腦>右鍵>管理>服務與應用程式>IIS管理員
(本Demo未輸入主機名稱),按下「確定」
※如果一台電腦上要架設多個站台的話,請確保每個站台的連接埠不一樣或每個站台的主機名稱(DomainName)不一樣,網站才執行得起來
接下來要設定「預設文件」,目的是為了當使用者輸入一個DomainName的URL或輸入一個目錄名稱,預設要導向的網頁
※「預設文件」不設定沒關係,但就要啟用「瀏覽目錄」的功能(但不建議這樣做,因為會讓使用者知道你的網站架構),所以以下Demo有把「瀏覽目錄」功能「停用」
左鍵Click進入
左鍵Click進入
要測試網站有沒有架設成功,可以左鍵點選站台名稱後>「瀏覽*:80(http)」
有看到畫面代表成功了(以下Hello World的字串為從資料庫撈出來的字串)
本Demo剛剛沒有輸入DomainName,所以是http://localhost(或自己電腦的IP位址)
如果剛剛有輸入DomainName的話,可以直接在瀏覽器上輸入DomainName試試看網站是否成功被執行
以下附上該網站的Web.config設定(因為IIS有設定預設文件,所以defaultDocument區塊會被自動追加修改)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<connectionStrings>
<!--資料庫的連線字串,Data Source為DB Server的IP位址-->
<!--Initial Catalog為預設資料庫-->
<!--Uid和Pwd請分別輸入SQL Server驗證登入的帳號和密碼-->
<add name="connStr" connectionString="Data Source=192.168.1.9;Initial Catalog=Northwind;Uid=test;Pwd=test;Max pool Size=300" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="false" targetFramework="4.0" />
</system.web>
<system.webServer>
<defaultDocument>
<files>
<add value="index.aspx" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
6.其他
如果要修改該網站的DomainName的話,請到該站台的「繫結」
如果要修改該網站使用的應用程式集區:
以上上圖ASP.net v4.0為整合式
ASP.net v4.0 Classic為傳統式
如果發生錯誤
偵測出 ASP.NET 設定沒有套用到整合式 Managed 管線模式
此為應用程式集區整合式和傳統式的問題,請參考此篇的解法:[IIS 7.5/Win2008 R2] 部署ASP.net Web Site問題集合
※請一定要注意,.net 4開發的網站就應該跑在.net 4版本的應用程式集區,非.net 4開發的網站就不要用ASP.net v4.0和ASP.net v4.0 Classic應用程式集區
否則會發生Server Application Unavailable 或 伺服器應用程式無法使用的錯誤
解法和說明請參考此篇的常見問題4:ASP.NET 4.0 安裝在 IIS6 最常遇到的四個問題
以上,正式部署網站時,本人大概就是如此架設
如果是本機練習的話,因為不可能有DomainName,要用不同的連接埠進到不同的網站要記Port號碼又麻煩
所以練習測試環境的話,可以這樣架設多個「應用程式」
1. 把「預設站台」啟動
2. 修改「預設站台」的應用程式集區
3. 新增應用程式
※虛擬目錄只能執行靜態網頁,應用程式可以執行動態網頁,如果不小心架成虛擬目錄的話,待會也可以對著虛擬目錄右鍵>轉換成應用程式
4 左鍵應用程式>測試與執行
可以照著此方法,新增多個應用程式,URL就會是http://本機電腦的IP位址/應用程式名稱
之後的各項設定跟站台類似,就不再累述,但切記站台所做的變更,底下的「應用程式」會跟著繼承
※最後印象中如果64位元的環境會執行到32位元應用程式的話
請到應用程式集區設定
※2011.11.24追記:
針對要上傳檔案的目錄請新增寫入的權限※資料夾沒設定網站寫入權限的話,有可能發生:A generic error occurred in GDI+. 錯誤
權限名稱請參考:介紹 IIS 7.5 的應用程式集區與新增的「虛擬帳戶」特性 (【IIS AppPool\應用程式集區名稱】)
如果ASP.NET 想把檔案寫入到網路芳鄰的分享目錄的話,請參考:ASP.NET 如何將檔案寫入到網路芳鄰的分享目錄
(只是我只完成1、2、3、6的步驟並把File目錄開成「共用」就行了)
※2011.12.18 追記:[MS SQL] SQL Server 2008新增允許遠端登入帳號
※2012.5.1 追記:IIS應該啟用的功能設定
啟用 IIS7 (含 ASP.NET 與 WCF HTTP 啟動、靜態內容、IIS 管理主控台與選用的 CGI)。
- Windows 7
- 在 [開始] 功能表中,依序選取 [控制台] | [程式] | [程式和功能]。
- 按一下 [開啟或關閉 Windows 功能]。
- 在 Microsoft .NET Framework 3.5 下,選取 [Windows Communication Foundation HTTP 啟動]。
- 在 Internet Information Services 底下,展開 [全球資訊網服務] 和 [應用程式開發功能],然後選取 [ASP.NET] 和 [CGI]。
- 在 Internet Information Services 底下,展開 [全球資訊網服務] 和 [一般 HTTP 功能],然後選取 [靜態內容]。
- 在 [網際網路資訊服務] 下,展開 [Web 管理工具],然後選取 [IIS 管理主控台]。
- 安裝選取的功能。
- Windows Server 2008
- 在 [開始] 功能表中,依序選擇 [程式集]、[系統管理工具] 和 [伺服器管理員]。
- 在 [伺服器管理員] 中 [功能摘要] 底下,選取 [新增功能]。
- 在 [新增功能] 對話方塊中 [.NET Framework 3.0 功能] 底下,選取 [.NET Framework 3.0]。在 [WCF 啟動] 底下,選取 [HTTP 啟動]。按 [下一步] 按鈕進行安裝。
- 在 [伺服器管理員] 中 [角色摘要] 底下,確認 [網頁伺服器 (IIS)] 有出現在可用角色的清單中。如果沒有出現,請按一下 [新增角色],安裝 Internet Information Services。
- 在 [伺服器管理員] 中 [角色摘要] 底下,按一下 [網頁伺服器 (IIS)]。
- 在 [網頁伺服器 (IIS)] 管理視窗中,按一下 [新增角色服務]。
- 在 [新增角色服務] 對話方塊中,依序展開 [網頁伺服器] 和 [應用程式開發],然後選取 [ASP.NET] 和 [CGI]。
- 在 [新增角色服務] 對話方塊中,依序展開 [網頁伺服器] 和 [一般 HTTP 功能],選取 [靜態內容],然後按 [下一步] 按鈕進行安裝。
※2017.09.15 追記
[C#][ASP.NET MVC5] FileUpload 上傳檔案大小的限制
※2014.12.23 追記 https功能的啟用說明
Tip/Trick: Enabling SSL on IIS 7.0 Using Self-Signed Certificates