Hopes

          Start Here..

           

          ASP.NET總結

          ASP.NET總結

          2009年09月24日

            第一章: 

            1.ASP.NET優點: 

            1) 與瀏覽器無關 2) 方便設置斷點,易于調試 3) 編譯后執行,運行效率高 4) 豐富的控件庫 5) 代碼后置,邏輯分明 

            Asp.net頁面編譯:asp.net代碼經過編譯后生成MSIL(微軟中間語言),然后通過JIT(即時編譯器)進一步編譯成機器語言,其中JIT并非一次完全編譯,而是調用哪部分代碼就編譯哪部分,編譯好的不需要再編譯。 

            2.IIS:基于Windows系統的Web服務器的,ASP.NET的發布是基于IIS服務器的,類似JSP中使用Tomcat。在VS中,內置了輕量級的Web服務器,為Cassini,無須配置IIS。 

            3.ASP.NET解決方案自動生成文件如下 

            1) App_Data(存放數據的文件夾) 2)Web.Config(站點配置文件) 3) Default.aspx(Web窗體) 4) Default.aspx.cs(代碼后置文件) 

            4.ASP.NET兩種編碼方式:代碼內嵌(Html代碼和C#代碼交叉使用,只有aspx文件) 代碼后置(Html代碼和C#代碼分開放置,包含aspx文件和aspx.cs文件) 

            第二章: 

            1.Asp.net運行機制:用戶第一次請求頁面時,asp.net引擎會編譯aspx文件和cs文件,合并生成頁面類,請求經處理后,返回處理結果。而第二次請求頁面時,由于頁面類已存在,故直接處理返回。 

            2.Asp.net中常見的系統對象 

            1) Page:指向頁面自身的方式,整個頁面執行期內可使用該對象。<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”default.aspx.cs” Inherits=“_default”> 注意:AutoEventWireup設置頁面是否自動調用網頁事件,如果該屬性設置為false,則不會觸發事件(例如Page_Load等等) 

            2) Request:存儲請求信息,常用屬性QueryString可得到URL中 ?后面的參數,Form表單提交方式時取值,ServerVariable包含服務器端和客戶端的系統信息,Params以上三種均可取值,因為需要在URL,表單,環境變量中找尋,故速度慢。舉例 :url為 MyAs.aspx ?id=5,則取值可使用 string num = Request.QueryString[”id”].ToString() ; 

            3) Response:存儲輸出信息,常用屬性Write方法可輸出指定文本內容,Redirect方法為頁面重定向操作。 

            4) Session:狀態保持,存儲于服務器端,用于存儲會話信息,一般用于當用戶登錄時記錄用戶狀態,當訪問其它頁面時判斷是否存在該Session,如果為null則用戶尚未登錄,則轉向登錄頁面即可,不為null時可繼續處理。 

            使用方式 :Session[”user” ] = ”wkj”; 頁面判斷使用 if(Session[”user”] == null) Response.Redirect(”Login.aspx”) ; else Response.Write(”歡迎” + Session[”user”].ToString()) ; 

            5) Cookie:狀態保持,存儲于客戶端,用于當用戶第一次登錄時記錄用戶信息,以備下次登錄時不必再重復輸入一些基本信息,例如登錄郵箱時所輸入的Email地址,登錄成功后,第二次不必再輸入Email地址信息。 

            6) Application:狀態保持,存儲于服務器端,為整個應用程序級的對象,一般用于統計在線人數。用戶首次登錄時設置Application[”num”] = 0,以后每次有一個用戶登錄則設置Application[”num”]=Convert.ToInt32(Application[”num”].ToString()) + 1 ; 

            7) Server:提供服務器端的一些屬性和方法,最常用方法MapPath,得到所傳路徑的絕對路徑,一般做文件操作時取絕對路徑使用。 例如:string path = Server.MapPath(”Default.aspx”);可能返回 : D:\wkj\Lesson2Web\Default.aspx 

            3.頁內數據傳遞:asp.net會發生頁面回傳,故可使用Page.IsPostBack判斷。一般在Page_Load中做頁面初始化時需要加上,以避免頁面回傳后重新初始化信息而取不到頁面輸入的值。 If( ! Page.IsPostBack) {初始化信息} 

            4.跨頁數據傳遞:支持跨頁傳遞需要設置PostBackUrl屬性到相應路徑,支持PostBackUrl的控件只有Button,LinkButton,ImageButton。第二個頁面取值 if(Page.PreviousPage != null) { if(PreviousPage.IsCrossPagePostBack) { Response.Write( ((TextBox)this.PreviousPage.FindControl(”txtName”)).Text ) } } 

            第三章: 

            1.Asp.net控件 

            1) html控件,后臺取不到值,可轉換民服務器端控件加runat=”server”。 

            2) Web控件,可執行復雜請求,優點:跨瀏覽器兼容性(程序員不用考慮瀏覽器版本),事件驅動模型(像WinForms編程一樣)。 

            2.TextBox控件 AutoPostBack(是否自動提交),例如:設置TextChange事件,AutoPostBack設置為true則自動觸發事件,設置為false則不觸發 

            TextMode(文本樣式) SingleLine為單行輸入,默認值。 MultiLine為多行輸入。Password為密碼輸入方式。 

            3.站點地圖,網站右鍵添加新項,選擇站點地圖,默認名為Web.sitemap。站點地圖是對站點結構的XML描述。注意事項:站點地圖根節點為<siteMap>元素,并且每個文件有且僅有一個根節點。<siteMap>下一級有且僅有一個<siteMapNode>節點。<siteMapNode>下面可以有多個<siteMapNode>節點。站點地圖中,同一個URL僅能出現一次。 

            4.導航控件 

            SiteMapPath控件: 面包屑導航,自動調用站點地圖,在站點地圖節點中url指示的頁面中托入SiteMapPath控件即可。如果站點地圖中不包含當前頁面則SiteMapPath控件不顯示也不報錯。改變分隔符使用PathSeparator屬性。 

            TreeView控件:配置的數據源可為站點地圖或者是XML文件,設置為站點地圖時可直接顯示,設置為XML文件時還需要設置 ”編輯TreeNode數據綁定”,添加節點設置TextField屬性為顯示,NavigateUrlField屬性為鏈接. 

            Menu控件:使用方式與TreeView控件一致,只是Menu控件可顯示靜態或動態的,使用StaticDisplayLevels屬性設置靜態或動態,默認為1即動態,可設置相應級別數設置為靜態。 

            5.母版頁:應用于統一的布局。網站右鍵添加新項選擇母版頁,默認命名為MasterPage.master,可改名。設置母版頁樣式,可添加內容頁。 

            特點:有利于站點修改和維護,在母版頁中添加事件,則每一個頁面都可使用。 

            第五章: 

            1.數據展示兩種實現方式:一種是使用ado.net 手寫代碼實現,另一種是使用數據源控件實現(簡單方便) 

            2.數據源控件:快速實現多種常用的數據源進行展示,快速完成表增刪改查操作。數據源控件不提供展示,而是數據綁定控件提供展示(GridView,DetailsView,DropDownList,DataList,Repeat er)。 

            常用五種數據源控件 :SqlDataSource(sqlserver數據庫),AccessDataSource(access數據庫),SiteMapDataSource(SiteMapPath),XmlDataSource(TreeView,Menu),ObjectDataSource(對象型,分層結構使用) 

            3.ObjectDataSource重要屬性 

            TypeName獲取設置ObjectDataSource對象表示類的名稱,即業務對象的類名, SelectMethod檢索數據方法名,InsertMethod插入數據方法名,UpdateMethod 更新數據方法名,DeleteMethod 刪除數據方法名 

            4.手寫代碼方式綁定GridView:this.gvMain.DataSource = UserManager.GetAllUsers() ; this.gvMain.DataBind() ; 

            設置數據源方式綁定GridView:this.gvMain.DataSourceId=數據源id; 

            5.GridView綁定信息:點右小鍵頭選擇新建數據源,選ObjectDataSource,選業務邏輯對象,選擇相應方法,完成。設置分頁只要設置AllowPaging為true即可。 綁定字段設置7種 : 

            1) BoundField顯示普通文本,默認方式,可通過DataFormatString屬性設置顯示格式,{0 : C}貨幣 {0 :D}數字 {0 :yy-mm-dd}日期格式,注意設置HtmlCode屬性為false時DataFormatString屬性才生效 

            2) TemplateField 模板列,最常用方式,可自己編寫HTML代碼進行設置 

            3) ButtonField 按鈕列,可通過CommadName設置按鈕命令,自定義代碼實現按鈕觸發后操作。 

            4) CommandField 類似于按鈕列,只不過其提供了選擇,編輯,插入或刪隊操作的命令按鈕,自動生成命令,無須手寫代碼。 

            5) HyperLinkField 將所綁定數據以超鏈接形式顯示。 

            6) ImageField 在GridView中顯示圖片列,DataImageUrlFields設置綁定列,DataImageUrlFormatString設置圖片路徑。 

            7) CheckBoxField 使用復選框形式顯示布爾類型數據。只有當該控件中有布爾型數據時才可使用CheckBoxField。 

            6.Bind方法與Eval方法的區別: 

            Eval是只讀的單向數據綁定,所綁定的內容不會提交回服務器,使用方式<%# Eval(”user”).ToString() %>,可實現格式化<%# Eval(”PublishDate”, ”{0 :dd/MM/yyyy}”) %>顯示格式可能為 ”17/08/2008”。 

            Bind支持讀寫功能,為雙向數據綁定,所綁定內容自動提交回服務器,常與輸入控件一起使用。 <%#Bind(”Title”) %> 

            7.光棒效果: protected void gvDemo_RowDataBound(object sender, GridViewRowEventArgs e) 

            { 

            if (e.Row.RowType == DataControlRowType.DataRow) 

            { 

            e.Row.Attributes.Add("onmouseover","currentcolor=t his.style.backgroundColor;this.style.backgroundColo r='#6699ff'"); e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor"); } } 8.多選效果: function GetAllCheckBox(CheckAll) 

            { 

            var items = document.getElementsByTagName("input"); 

            for(i=0; i<items.length;i++) 

            { 

            if(items[i].type=="checkbox") 

            { 

            items[i].checked = CheckAll.checked; 

            } 

            } 

            } 

            9.后臺取頁面值。 for (int i = 0; i < this.gvBooks.Rows.Count; i++) 

            { 

            CheckBox cb = (gvBooks.Rows[i].FindControl("chbSelect")) as CheckBox; 

            if (cb.Checked == true) 

            { 

            sb += (gvBooks.Rows[i].FindControl("lblId") as Label).Text+","; 

            } 

            } 

            10.DropDownList控件:DataTextField屬性為顯示字段,DataValueField屬性為真正顯示的值,SelectedIndexChange事件更改選定項內容時觸發,僅當AutoPostBack屬性設置為true時有效。 

            得到下拉框顯示的信息,ddlPublisher.SelectedItem.Text或者ddlPublisher.Text。得到下拉框的值:ddlPublisher.SelectedItem.Value或者ddlPublisher.SelectedValue; 

            11.DetailsView控件可顯示數據庫中的單條記錄詳細信息,使用方式與GridView類似。只是需要設置傳遞參數。 

            12.使用控件顯示時,如果內容中有HTML標簽,比如”<br>”,也會顯示出來,想讓它顯示成換行,將該字段的HtmlEncode屬性設置為false即可。 

            第六章: 

            1.驗證控件,可以輕松實現用戶輸入的驗證,且與用戶瀏覽器無關。由在客戶端或服務器中運行的驗證代碼執行,主要為客戶端。 

            驗證控件特點:以調試模式運行,如果驗證控件驗證出問題,則頁面不會提交到服務器執行,說明驗證是在客戶端進行的。 

            如果將IE設置為禁用腳本,而頁面發生回傳,驗證沒有發生,正常情況下不希望沒有經過驗證就進入后臺操作,可使用if(Page.IsValid) { } 

            驗證控件常用屬性 :(如下ControlToValidate為所有驗證控件的必須屬性): 

            ControlToValidate為所要驗證的控件的ID 

            Text為出錯時的提示,一般寫為*號 

            ErrorMessage為提交給ValidationSummary的錯誤提示,當Text為空時,會顯示該錯誤信息。 

            1) RequiredFieldValidator 非空驗證 

            2) CompareValidator 比較控件 用于驗證用戶輸入的內容是否符合要求,一般用于兩次密碼的比較或者輸入的值與某個固定值的對比 

            常用屬性:ControlToCompare即要進行對比的控件,Type為比較類型,不同類型比較會出錯,Operator為比較運算符,默認為等于 

            3) RangeValidator 用于檢查范圍 

            常用屬性:MaximumValue為最大值,MinimumValue為最小值,Type為驗證類型(字符串,整型,雙精度,日期,貨幣五種) 

            4) RegularExpressionValidator 正則表達式驗證控件,正則表達式就是用某種模式去匹配一類字符串的一個特殊公式。 

            常用屬性:ValidationExpression用于確定有效性的正則表達式,MS提供了一些,一些常見的可見書上145頁。也可到網上去搜索。 

            5) CustomValidator 自定義驗證控件,支持客戶端驗和服務器端驗兩種方式。 

            常用屬性:ClientValidationFunction用于設置客戶端驗證的腳本函數 OnServerValidate為服務器端驗證的事件方法。 

            例如驗某個文本框值的長度,要求必須大于6位 

            Function CheckLength(source,args) 

            { 

            If(args.value.length<6) args.IsValid=false ; 

            Else args.IsValid=true ; 

            } 

            6) ValidationSummary 驗證報告控件,該控件不對窗體輸入進行驗證,只是將驗證的錯誤匯總在一處統一顯示,顯示的為ErrorMessage 

            常用屬性:ShowMessageBox是否顯示彈出提示信息,ShowSummary指示是否顯示報告內容,想設置為彈出框顯示將前者設為true,后者設置為false 

            2.JS版日歷控件 可實現在用戶選擇日期時,不刷新頁面 

            使用方法 :1. 將My97DatePicker放入站點中的一個目錄,假設放于網站的根目錄。 

            2. 在頁面添加如下語句 : <script language="javascript" type="text/javascript" src="My97DatePicker/WdatePicker.js"></script> 

            3. 在設置日期的控件上添加如下樣式和事件,例如 

            class="Wdate" onFocus="new WdatePicker(this,'%Y-%M-%D %h:%m',true,'default')" 

            3.文件上傳控件 可將圖片等文件上傳到服務器 

            使用方法: 1. 托入FileUpload <asp:FileUpload onchange=”CheckImg(this)” ID=”fulFile” runat=”server”> 

            2. 控制上傳的文件格式(JS腳本): 

            function CheckImg(this) 

            { 

            var mime=FileUpload.value; 

            mime=mime.toLowerCase( ).substr(mime.lastIndexOf(".")); if(mime!=“.jpg") { FileUpload.value=""; alert("僅支持JPG格式"); 

            } 

            } 

            3.點擊更新時,將圖片上傳到服務器,在ItemUpdated事件中編碼 

            protected void dvBookList_ItemUpdated(... ...) 

            { 

            FileUpload fulBook = this.dvBookList.FindControl("fulBook") as FileUpload; 

            Image imgBook = this.dvBookList.FindControl("imgBook") as Image; 

            string FileName = fulBook.FileName; 

            if (FileName.Trim().Length != 0) 

            { 

            string strpath =Server.MapPath(imgBook.ImageUrl); 

            fulBook.PostedFile.SaveAs(strpath); //將圖片保存在此路徑中 

            } 

            } 

            4.MultiView為多視圖的意思,一般和View控件一起使用,View可表現為一個窗口,而MultiView為View控件提供容器。一個MultiView可有多個View 

            ActiveViewIndex用于設置或獲取當前被激活顯示的View索引值 。MultiView控件名.ActiveViewIndex=0,則設置顯示第一個視圖。 

            5.ImageMap可以將圖片轉變為導航菜單,可對圖片區域進行劃分,為區域賦予特定屬性,類似于HTML中的熱點(map標簽) 

            為了解內容,詳細見書160頁 

            6.HyperLink 超鏈接控件 常用屬性 Text為鏈接顯示文本,NavigateUrl為鏈接所指向的URL地址,ImageUrl設置為圖片形式的鏈接。 

            第七章: 

            1.DataList 以某種格式顯示數據,格式可使用模板和樣式定義,可用于任何重復結構中的數據,比如說表,使用<Table>等相關元素在列表中呈現項。 

            托入頁面后需要編輯模板列,常用模板兩個,一是ItemTemplate為項模板,標記了每行顯示的內容。二是SeparatorTemplate為分隔符模板,一般為一條線<hr> 

            使用方式:1. 根據美工制作好的靜態頁面,將項模板添加到DataList中。 

            2. 找到需要替換的部分,直接替換為綁定語句(Eval, Bind)。 

            3. 綁定數據源。 

            2. DataList排序,需要自定義方法,在頁面中綁定的是排好序的數據。 

            public static IList<Book> GetBooks(int categoryId, string order) 

            { 

            //組合的sql語句 

            string condition = " WHERE 1=1 "; 

            if (categoryId > 0) 

            condition = " AND CategoryId = " + categoryId; 

            if (order.Trim().Length > 0) 

            condition = " order by " + order; 

            return BookService.GetBooks(condition); 

            } 

            3.DataList分頁 

            1) 使用普通SQL語句實現 

            Select Top 頁容量 * 

            from 表 

            where 條件 and id not in 

            (Select Top 頁容量*(當前頁數-1) id 

            from 表 

            where 條件 order by 排序條件) 

            order by 排序條件 

            2) SQLSERVER2005方式 

            Select * 

            From 

            ( select ROW_NUMBER() over(order by 排序條件) as 別名 , * from 表名 ) as 新表名 

            Where 別名 between 頁面第一頁號 and 頁面最后一頁號 21--------30 

            Order by 排序條件 

            3) PagedDataSource分頁類方式,指定數據源和當前頁,PageSize即可使用,類自動計算其他相關屬性。 

            //1.聲明分頁類 

            PagedDataSource pdsBook = new PagedDataSource(); 

            //2.綁定數據源 

            pdsBook.DataSource = BookManager.GetOrderedSmallBooksByCategoryId(categ oryID, ViewState["order"].ToString()); 

            //3.設置分頁類可以分頁 

            pdsBook.AllowPaging = true; 

            //4.設置每頁顯示的行數 pdsBook.PageSize = 4; //5.設置當前為第幾頁 

            pdsBook.CurrentPageIndex = CurrentPage; 

            lblCurrentPage.Text = string.Format("第 {0} 頁,共 {1} 頁",CurrentPage+1,pdsBook.PageCount.ToString()); 

            //6.將分頁類綁定到DataList 

            dlBooks.DataSource = pdsBook; 

            dlBooks.DataBind(); 

            4.ViewState 為頁面級的狀態保持,僅在當前頁面有效,不占用系統Session資源,利用IsPostBack屬性對ViewState屬性賦初值,可避免使用時NULL的判斷。 

            使用方式:ViewState["名稱"]=值 例如將頁數0存入ViewState可以這樣寫 ViewState["Page"]=0 ; 

            事實上,ViewState狀態保持就是在頁面放置一個隱藏域,每次數據回傳,隱藏域內容也一起回傳,從而達到狀態保持效果 

            顯示為 : <input type="hidden" name="_VIEWSTATE" value=""> 

            5. Repeater控件專門用于精確內容的顯示,不會自動生成任何用于布局的代碼,完全通過模板控件。當美工提供的設計頁沒有Table,樣式都在CSS中時可使用。 

            使用方式同DataList,另外分頁,排序也同DataList,代碼可以重用。 

            6. 發布RSS 了解內容 

            過程:制作RSS模板,設置頁面輸出為XML,去掉所有HTML源代碼只留下Repeater控件,使用RSS模板替換相關項,使用RSS閱讀工具訪問該RSS頁。 

            注意:顯示字段使用HtmlEncode編碼處理。 

            7.DataList控件、Repeater控件、GridView控件各自特點 

            GridView控件最簡單方便,效率最低 

            Repeater控件最完善,最難用,全手工,效率最高 

            DataList控件介于兩者之間,效率接近Repeater,使用范圍最廣。 

            第八章: 

            1.FreeTextBox控件 是一種富文本控件,也就是在線文本編輯控件,可以像Word編輯器那樣對錄入的內容設置樣式,排版等,而不用編寫HTML代碼。 

            常見的有: 

            ① RichTextBox,最早的富文本控件,富文本控件因它而得名。 

            ② FCKeditor,是國外一個開源的項目。 

            ③ CuteEditor,功能最完善,但它自身也是相當龐大的。 

            ④ eWebEditor,國產軟件,有中國特色。 

            ⑤ FreeTextBox,簡單方便,在國內使用相當普遍。 

            使用方法: 

            1) 添加控件進入工具箱 

            2) 添加選項卡。右擊工具欄,選擇“添加選項卡”命令。 

            3) 選擇項。右擊選項卡,點擊“選擇項”命令。然后,單擊“瀏覽”按鈕,找到并選擇需要加入的FreeTextBox.dll,單擊打開按鈕。 

            4) 單擊“確定”按鈕。 

            5) 頁面使用 把FreeTextBox控件拖入頁面,可以看到頁面種多了幾行代碼: 

            <% Register Assembly=”FreeTextBox” Namespace=”FreeTextBoxControls” TagPrefix=”FTB” %> 

            <FTB:FreeTextBox ID=”FreeTextBox1” runat=”server”></FTB:FreeTextBox> 

            大意:注冊一個叫做FreeTextBox的程序,命名空間是FreeTextBoxControls,標簽前綴是FTB。 

            常用屬性:Language(語言),注明”en-US”為英語,改成”zh-CN”就能換成中文了。 

            2.驗證碼控件Webvalidates 

            1)使用步驟:將Webvalidates添加進工具箱同添加FreeTextBox方式。 

            2) 生成驗證碼: snCode.Create(); //snCode為驗證碼控件名稱,一般在PageLoad中 If(!IsPostBack) { snCode.Create(); } 

            3) 檢查所輸入的信息與驗證碼是否相同 snCode.CheckSN(txtCode.Text.Trim()) //返回bool型的值 

            自定義方法判斷驗證碼是否正確 

            Protected bool CeckCode() 

            { 

            if (snCode.CheckSN(txtCode.Text.Trim())) return true; 

            else { snCode.Create(); return false; } //如果驗證碼輸入不正確,則生成新驗證碼 

            } 

            第九章: 

            1.用戶控件:后綴名為ascx ,是一種自定義的組合控件,可以封裝獨立的功能,可像控件一樣使用托拽方式 

            作用:頁面代碼的重用。 

            使用:添加新項,選擇Web用戶控件(后綴ascx),在其中放置相關的web控件,編寫后臺代碼。然后在其它頁面中直接拖到頁面中即可。 

            注意:用戶控件可以包含其它用戶控件,但不可以嵌套包含。即用戶控件1包含用戶控件2,用戶控件2又包含了用戶控件1,則會出錯。 

            用戶控件不可以單獨訪問。在URL中直接訪問會出錯。 

            用戶控件與頁面的區別 詳見書上第229頁。 

            2.數字水印實現:見第9章總結介紹。自己添加到本頁面。 

            1) 創建HttpHandle程序:添加新項----一般處理程序(后綴.ashx) 

            注意:實現HttpHandler功能必須實現IHttpHandler接口,任何實現該接口的類都可以用于處理輸入的Http請求。 

            2) 數字水印實現 

            思路:.ashx文件方式實現數據水印思路分析 

            獲得URL傳的參數ISBN; 根據ISBN查找相對應的封面圖片; 

            將數字水印圖片“粘貼”在封面圖片的右下角; 

            修改程序的輸出類型,并將組合出的新圖片輸出。 

            修改頁面中訪問該圖片的路徑。 

            具體代碼:P235到P236 

            注意:當制作好一般處理程序后修改圖片路徑 BookCover.ashx ? ISBN=值 

            3.全局Handler方式實現數字水印 

            1)新建類,讓該類實現IHttpHandler接口,實現方法 

            2)在web.config中注冊類,設置路徑 

            <httpHandlers> 

            <add verb=”*” path=”Images/BookCovers/*.jpg” type=”CoverHandler” /> 

            </httpHandlers> 

            說明:verb:get,post,ftp等 

            Path:訪問路徑,此處表示所有針對”Images/BookCovers/”路徑中所有對.jpg的請求都交給CoverHandler類進行處理 

            Type:指定處理程序的類(CoverHandler) 

            具體代碼:P240 

            注意:在IIS上使用該方式要做其他處理,因為IIS功能比較完善,可以獨立處理一些訪問請求,比如.html,.jpg等都不會提交給ASP.NET處理。 

            對IIS進行處理:打開IIS,虛擬目錄屬性項,目錄欄中選“配置”,添加擴展名。 

            第十章: 

            1.ASP.NET的兩種配置文件,都是基于XML格式的。 

            1) machine.config:又稱服務器配置文件,提供整個機器的默認配置,對該文件的修改將影響所有本機的站點。 

            2) web.config:一般用于應用程序級別的配置文件,對其修改不影響其他站點,也可以用于站點下的子目錄。 

            注意:當一個網站中配置了多個web.config文件時以就近原則為準。 

            2.Web.config中配置連接字符串 

            1) 配置 <connectionStrings> 

            <add name="MyBookShop" connectionString="Data Source=localhost; Initial Catalog=MyBookShop; User ID=sa; password=d@e26c#"/> 

            </connectionStrings> 

            2) 讀取 數據訪問層的類庫引用該類需要手動添加System.Configuration類庫的引用,再在需要讀取配置節的頁面using System.Configuration; 

            然后使用如下方式讀取 string connectionString=ConfigurationManager.ConnectionSt rings[“MyBookShop”].ConnectionString; 

            3.加密解密 

            1) 加密web.config里面connectionStrings配置節 

            aspnet_regiis.exe -pef "connectionStrings" "你的Web項目路徑" -prov "DataProtectionConfigurationProvider" 

            eg:aspnet_regiis.exe -pef "connectionStrings" "E:\WKJ\MyBookShop\web" -prov "DataProtectionConfigurationProvider" 

            2) 解密web.config里面connectionStrings配置節 

            aspnet_regiis.exe -pdf "connectionStrings" "你的Web項目路徑" 

            eg:aspnet_regiis.exe -pdf "connectionStrings" "E:\WKJ\MyBookShop\web" 

            4.身份驗證 

            1) Windows身份驗證 安全性高,只能在windows平臺可以使用,并且在域中要有一個帳戶 

            2) Passport身份驗證 需要付費 

            3) Forms身份驗證 使用廣泛 

            <system.web> 

            <authentication mode="Forms"> 

            <forms name="AdminUser" loginUrl="~/Admin/AdminLogin.aspx" timeout="60"> 

            </forms> 

            </authentication> 

            </system.web> 

            注意:1) authentication中的mode指定驗證方式,分別有Windows、Passport和Forms 

            2) forms中的name為cookie名稱,默認為.ASPXAUTH。 

            loginUrl為表單驗證的登錄頁面,未通過驗證的用戶都轉到該頁面。 

            Timeout為表單驗證的有效時間,即是cookie的過期時間 

            5.授權 

            <system.web> 

            <authorization> 

            <deny users="?"/> 

            <allow roles="admin"> 

            <deny users="*"/> 

            </authorization> 

            </system.web> 

            其中:deny為拒絕,allow為允許。“ * ”代表所有用戶,“ ? ” 代表匿名用戶 

            6.設置票證 System.Web.Security.FormsAuthentication.SetAuthCoo kie(user.Name, true); 注意true為設置持久化,設置為false則當前頁面關閉cookie失效 

            刪除票證 System.Web.Security.FormsAuthentication.SignOut( ); 刪除票證后Cookie失效 注意:當未經授權的用戶訪問頁面時,會轉向登錄頁要求注冊。 

            在登錄成功后: string strRedirect = Request[“ReturnUrl”]; 可得到用戶請求的頁面 

            If(strRedirect == null) 則轉向自己處理的頁面 

            Else Response.Redirect(strRedirect); 轉向用戶所請求的頁面。 

            7.其他常用配置 

            1) 自定義錯誤配置節 

            <customErrors mode="RemoteOnly" defaultRedirect="ErrorPage.htm"> 

            <error statusCode="404" redirect="FileNotFound.htm" /> 

            </customErrors> 

            Mode: On表示啟用自定義錯誤 

            Off表示禁用自定義錯誤 

            RemoteOnly表示只顯示個遠程客戶機,本地調試顯示正常錯誤 

            2) 應用程序運行時配置 

            <httpRuntime enable="true" executionTimeout="90" maxRequestLength="4096" /> 

            enable: true該應用程序為啟動狀態, false 相當于關閉該站點 

            maxRequestLength:控制上傳內容的大小,默認4MB。 

            </httpRuntime> 

            3) 調試配置 

            <compilation debug="true"/> true為允許調試,否則為不允許調試 

            8.部署 

            1) 好處:隱藏源代碼,優化程序運行效果 

            2) 部署前的準備:第一關閉調試,調試符號會降低性能,第二將工程改為Release(發行版)方式 

            3) 部署的方法: 

            31) XCopy,最簡單方便的方式 使用如下:xcopy 源目錄 目標目錄 /f /e /k /h 

            32) 復制網站(Copy Web Site),類似ftp上傳 先選擇復制網站,點擊復制即可 

            33) 發布網站(預編譯)最常用 右鍵-發布網站-選擇路徑,最通用 

            很抱歉,因為您在網易相冊發布了違規信息,賬號被屏蔽。被屏蔽期間他人無法訪問您的相冊。 

            去幫助中心,了解如何重新恢復服務。 

          posted on 2012-05-21 15:56 ** 閱讀(525) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊

          收藏夾

          C#學習

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 盐城市| 怀仁县| 怀远县| 宁阳县| 海门市| 曲阳县| 平昌县| 台东市| 江口县| 安庆市| 略阳县| 甘泉县| 彝良县| 卓资县| 青州市| 衡阳市| 九寨沟县| 乌审旗| 莱州市| 灵璧县| 万盛区| 洛南县| 阳朔县| 汨罗市| 淮南市| 平凉市| 楚雄市| 胶南市| 黔东| 邵阳市| 奎屯市| 重庆市| 博罗县| 公主岭市| 富川| 荥阳市| 延长县| 五峰| 全椒县| 三台县| 灵川县|