[ASP.net WebForm] 在Windows7上架ASP.net網站(適用WinServer2008)

[ASP.net WebForm] 在Windows7上架ASP.net網站(適用WinServer2008)

說明以下的Demo 環境

OS:Windows 7 64bit

DB:SQL Server 2008 (和IIS在同一台電腦上)

 

1. 要在Windows7上架ASP.net網站前要先啟動安裝IIS

控制台>程式和功能>開啟或關閉Windows功能

image

然後按「確定」

Windows Server 2008 IIS的位置

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

image

(如果不確定當初1、2步驟安裝順序的話,也可以執行以上指令)

 

 

3. 因為要讓外部連到網站

所以到控制台>Windows防火牆>進階設定

左方「輸入規則」把80 port打開(實務上這裡指的是AP Server)

image

因為實務上,AP Server架網站,DB Server架SQL Server

所以接下來假設網站要存取另一台電腦上的SQL Server

 

所以DB Server的Port(預設1433)也要打開

請在DB Server的電腦進到Windows防火牆>右方「新增規則」

image

選「連接埠」

image

輸入「1433」

image

「允許連線」

image

image

規則名稱請自行命名

image

如此Windows防火牆的設定完畢。

 

4. 接著要再設定SQL Server組態,讓它可以允許網站程式連接SQL Server

(實務上,這裡是DB Server的操作)

image

確保以下SQL Server和SQL Server Browser都有執行

image

Shared memory、TCP/IP、具名管道都有啟用

image

image

SQL Server網路組態的TCP/IP>內容

image  

IP位址>TCP動態通訊埠清空>TCP通設埠設1433後按「確定」

image

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3和4的步驟完成後,網站和SQL Server應該就可以溝通了.

 

5. 架設ASP.net 站台

系統管理工具>IIS管理員>新增網站

※因為我曾經遇過客戶提供的環境把系統管理工具隱藏起來(自訂開始功能表也找不到)的狀況,所以再提供一個找到IIS管理員的方法:

我的電腦>右鍵>管理>服務與應用程式>IIS管理員

 

image

image

(本Demo未輸入主機名稱),按下「確定」

※如果一台電腦上要架設多個站台的話,請確保每個站台的連接埠不一樣或每個站台的主機名稱(DomainName)不一樣,網站才執行得起來

接下來要設定「預設文件」,目的是為了當使用者輸入一個DomainName的URL或輸入一個目錄名稱,預設要導向的網頁

※「預設文件」不設定沒關係,但就要啟用「瀏覽目錄」的功能(但不建議這樣做,因為會讓使用者知道你的網站架構),所以以下Demo有把「瀏覽目錄」功能「停用」

image

左鍵Click進入

image

image

左鍵Click進入

image

要測試網站有沒有架設成功,可以左鍵點選站台名稱後>「瀏覽*:80(http)」

image

有看到畫面代表成功了(以下Hello World的字串為從資料庫撈出來的字串)

image

本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的話,請到該站台的「繫結」

image

image

image

 

如果要修改該網站使用的應用程式集區:

image

image

image

以上上圖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 伺服器應用程式無法使用的錯誤

解法和說明請參考此篇的常見問題4ASP.NET 4.0 安裝在 IIS6 最常遇到的四個問題

 

以上,正式部署網站時,本人大概就是如此架設

如果是本機練習的話,因為不可能有DomainName,要用不同的連接埠進到不同的網站要記Port號碼又麻煩

所以練習測試環境的話,可以這樣架設多個「應用程式」

 

1. 把「預設站台」啟動

image

2. 修改「預設站台」的應用程式集區

image

image

3. 新增應用程式

※虛擬目錄只能執行靜態網頁,應用程式可以執行動態網頁,如果不小心架成虛擬目錄的話,待會也可以對著虛擬目錄右鍵>轉換成應用程式

image

image

4 左鍵應用程式>測試與執行

image

image

可以照著此方法,新增多個應用程式,URL就會是http://本機電腦的IP位址/應用程式名稱

之後的各項設定跟站台類似,就不再累述,但切記站台所做的變更,底下的「應用程式」會跟著繼承

 

※最後印象中如果64位元的環境會執行到32位元應用程式的話

請到應用程式集區設定

image

image

 

 

※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
    1. 在 [開始] 功能表中,依序選取 [控制台] | [程式] | [程式和功能]。
    2. 按一下 [開啟或關閉 Windows 功能]。
    3. 在 Microsoft .NET Framework 3.5 下,選取 [Windows Communication Foundation HTTP 啟動]。
    4. 在 Internet Information Services 底下,展開 [全球資訊網服務] 和 [應用程式開發功能],然後選取 [ASP.NET] 和 [CGI]。
    5. 在 Internet Information Services 底下,展開 [全球資訊網服務] 和 [一般 HTTP 功能],然後選取 [靜態內容]。
    6. 在 [網際網路資訊服務] 下,展開 [Web 管理工具],然後選取 [IIS 管理主控台]。
    7. 安裝選取的功能。
  • Windows Server 2008
    1. 在 [開始] 功能表中,依序選擇 [程式集]、[系統管理工具] 和 [伺服器管理員]。
    2. 在 [伺服器管理員] 中 [功能摘要] 底下,選取 [新增功能]。
    3. 在 [新增功能] 對話方塊中 [.NET Framework 3.0 功能] 底下,選取 [.NET Framework 3.0]。在 [WCF 啟動] 底下,選取 [HTTP 啟動]。按 [下一步] 按鈕進行安裝。
    4. 在 [伺服器管理員] 中 [角色摘要] 底下,確認 [網頁伺服器 (IIS)] 有出現在可用角色的清單中。如果沒有出現,請按一下 [新增角色],安裝 Internet Information Services。
    5. 在 [伺服器管理員] 中 [角色摘要] 底下,按一下 [網頁伺服器 (IIS)]。
    6. 在 [網頁伺服器 (IIS)] 管理視窗中,按一下 [新增角色服務]。
    7. 在 [新增角色服務] 對話方塊中,依序展開 [網頁伺服器] 和 [應用程式開發],然後選取 [ASP.NET] 和 [CGI]。
    8. 在 [新增角色服務] 對話方塊中,依序展開 [網頁伺服器] 和 [一般 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