前言
ASP.NET網站的發布,無論是初學者還是高手,在程序的發布過程中或多或少會存在一些問題,譬如VS發布ASP.NET程序失敗、IIS安裝失敗、IIS發布失敗、局域網內不能訪、
配置文件錯誤、權限不足等一系列問題,結合我帶領的500多人的技術團隊反應的各種問題,我今天花點時間總結一下,方便大家,共同學習,共同進步。
為了後文的深入詳細分析,我寫了一個小Demo,代碼附上。本次基於VS2013,OS為WIN10,IIS7等環境講解。(其他操作系統如WIN7原理也類似,但有細微差別)
1、解決方案整體概覽
2、前端
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="sessionDemo.aspx.cs" Inherits="Test.sessionDemo" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <div><asp:Button ID="btnSesison" runat="server" Text="Session" OnClick="btnSesison_Click" /></div> </div> </form> </body> </html>
3、後端
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Collections; namespace Test { public partial class sessionDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnSesison_Click(object sender, EventArgs e) { //Session["a"] = "a"; //Session["b"] = "b"; //Response.Write(Session["a"].ToString()); //Response.Write(Session["b"].ToString()); string[] strSession = { "王文佳", "趙武", "楊雄", "熊熊" }; createSession(strSession); getSession(); } #region 自定義方法 //創建Session public void createSession(string[] arrStr) { //創建數組 string[] str=new string[arrStr.Length]; for (int i = 0; i < arrStr.Length; i++) { str[i] = i.ToString(); Session[str[i]] = arrStr[i]; } } //遍歷Session public void getSession() { IEnumerator sessionEnum = Session.Keys.GetEnumerator(); while (sessionEnum.MoveNext()) { Response.Write(Session[sessionEnum.Current.ToString()].ToString()+";"); } } //清空Session,但不結束會話 public void clearSession() { Session.Clear(); } //結束Session會話 public void abandonSession() { Session.Abandon(); } #endregion } }
4、測試結果
一、ASP.NET程序發布
1、用VS2013打開解決方案。
2、選中解決方案,點擊鼠標“右鍵”—>從彈出對話框中,選擇“清理解決方案”。
3、待第2步“清理解決方案”結束後,選中“解決方案”—>點擊鼠標“右鍵”—>在彈出對話框中,選擇“重新生成解決方案”。
4、待第3步“重新生成解決方案”結束後,選擇web運用程序,如下圖中“testDemo”—>點擊鼠標“右鍵”—>在彈出對話框中,選擇“發布”。
5、設置“配置文件”節點,點擊“下一步”。
6、設置“連接”節點,點擊“下一步”。
7、設置“設置”節點,點擊“下一步”。
8、設置“預覽”節點,點擊“發布”。
9、發布後的文件如下圖,此時文件發布成功,發布成功後,點開文件夾,所有頁面的.cs文件都放進bin裡面了。
二、IIS安裝
1、打開“控制面板”—>選擇“程序”。
2、在彈出對話框中選擇“啟用或關閉Windows功能”。
3、在彈出對話框中,選擇“Internet Information Services”(如果初學者,建議全部選擇,對於老手,按需選擇),點擊“確定”。
4、點擊確定後,系統正在運用所做的更改。
5、運用程序更改結束後,選擇“立即重新啟動”。系統重新啟動後,則IIS配置結束。
6、重啟電腦後,測試IIS配置是否成功。在浏覽器欄,輸入“http://localhost”,若出現如下界面,則表示IIS安裝成功。
三、IIS發布網站
1、在“我是Cortana,小娜,有問題盡量問我”輸入框輸入“Internet Information Services”.
2、打開IIS主界面。
3、選擇“網站”—>點擊鼠標“右鍵”,在彈出對話框中,選擇“添加網站”。
4、在彈出對話框中,設置相關參數。
5、此時,IIS主界面,“網站”多了一個站點“www.testWebSite”,即是剛才給站點取得名字。
6、配置運用程序池
7、配置默認文檔
8、默認文檔添加成功後,如下圖所示:
9、為了防止權限不足,將剛才發布的文件添加成員“everyone”,並賦予權限。右鍵—>屬性—>安全—>編輯—>添加
—>輸入“everyone”—>為用戶everyone賦權限—>確定。
10、注冊IIS。在所用程序中找到大寫V,選擇“Visual Studio 2013”—>選擇“Visual Studio Tools”—>以管理員身份選擇“VS2013 開發人員命令提示”,進入CMD。輸入"aspnet_regiis -i"。
11、至此,整個發布結束。
12、測試。在浏覽器地址欄輸入:”http://localhost:8090/sessionDemo.aspx“,訪問。
13、至此,IIS發布網站整過過程結束。
四、配置IIS應注意事項
1、注冊IIS問題
在所用程序中找到大寫V,選擇“Visual Studio 2013”—>選擇“Visual Studio Tools”—>以管理員身份選擇“VS2013 開發人員命令提示”,進入CMD。輸入"aspnet_regiis -i"。
2、權限不足問題
點擊要VS已發布文件,右鍵—>屬性—>安全—>編輯—>添加—>輸入“everyone”—>為用戶everyone賦權限—>確定。
3、防火牆問題
局域網內訪問不了,大部分因為防火牆問題,若直接關閉防火牆,則不安全,提倡以下解決方法。
HTTP服務默認實用80端口,只需要在防火牆(特別注意系統自帶的防火牆)中啟用HTTP服務(80端口)就可以;如果使用其它的防火牆,也需要進行類似的操作。
a、開始—>所有程序—>管理工具—>高級安全 Windows 防火牆—>在高級安全 Windows 防火牆的左邊欄;選擇“入站規則”—>在右邊欄選擇"新建規則“—>在彈出
的窗口依次選擇:選中端口—>下一步—>選中TCP以及特定本地端口填入要開放的端口號(這裡填入80;當讓也可以選擇開放所有端口
下一步—> 選中允許連接—>下一步—>選中所有選項—>下一步—>填入名稱(這裡填入IIS)。
4、檢測IIS是否安裝成功
在浏覽器網址中輸入:http://localhost ,若出現如下界面,則表示安裝成功。
5、端口問題
http默認端口為:80,IIS發布時,選擇其他端口。
6、運用程序池,應選擇與網站名稱相同,選擇集成方式(當都發布不成功時,可以經典與繼承來回切換測試),選擇版本V4。
7、VS發布時,選擇Release版本,而不是Debug版本,切CPU選擇 any CPU。
8、除以上問題外,還有其他問題,我會逐漸更新。