記錄下webconfig的配置(複製好久的筆記):web
一、 配置Session在url傳遞sql
在web.config中的 <system.web> 節點下添加,手動修改session的相關設置數據庫
<sessionState timeout="5" cookieless="true"> </sessionState>瀏覽器
二、 配置上傳文件大於4M,裏面是字節數,好比下面10M是1024*1024*10緩存
<system.web>服務器
<httpRuntime targetFramework="4.5" maxRequestLength="10485760"/>cookie
</system.web>session
三、好比上傳1g的內容。請求的篩選模塊是被直接拒絕,不會到後臺指定的頁面的,跟上面的界面配置要相同才行app
<configuration>asp.net
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824"></requestLimits>
</requestFiltering>
</security>
</system.webServer>
</configuration>
四、自定義通常處理程序類及配置
①新建一個類,繼承IHttpHandler,實現裏面的ProcessRequest方法與IsReusable屬性。屬性中若是get{return false;}表示每次瀏覽器的請求都會新建立這個通常處理程序的類的對象,爲true每次瀏覽器請求都是重用第一次建立的類的對象
②好比用戶須要xxx.hh這樣子在瀏覽器中訪問,咱們新建的這個類繼承IhttpHandler接口以後實現裏面的代碼專門接管處理這樣的需求。若是要要Session,還要實現Session的接口。 verb的GET與POST必定是大寫,也能夠*或者GET或者POST。
③參數name:能夠由程序本身定義,建議取有意義的名字,多個配置的name值不能重複
參數path:告訴asp.net處理機制,什麼樣的url纔會給 type指定的類型類處理
參數verb:告訴asp.net處理機制,是GET或者POST請求才進行截獲處理
IIS集成模式下配置
<system.webServer>
<!--適配IIS集成模式-->
<handlers>
<add name="iishander" path="*.hh" verb="*" type="WebApplication1.IISHandler1"/>
</handlers>
</system.webServer>
IIS經典模式下配置
<system.web>
<httpHandlers>
<add path="*.hh" verb="get,post" type="WebApplication1.IISHandler1" />
</httpHandlers>
</system.web>
五、配置URL重寫,新建一個類實現IHttpMoudle接口,或者寫在Global中(不須要配置文件)
①<system.webServer>
<modules>
<add name="url rewrite" type="利用過濾器實現url重寫.UrlRewrite"/>
</modules>
</system.webServer>
②利用IIS Url重寫模塊來實現url的友好重寫
利用IIS Url重寫模塊來實現url的友好重寫
在Web平臺安裝程序下載URL重寫工具安裝,返回就看到這個工具了。點擊打開,添加規則,友好url,輸入動態的url……(就是重寫以前的url)
六、進程外Session
使用狀態服務器存session
注意session存儲的對象必須支持可序列化,即類上面增長[Serializable]特性
<sessionState stateConnectionString="tcpip=127.0.0.1:42424" mode="StateServer"/>
修改默認端口:
使用數據庫存session
一、 Session保存的位置:
<sessionState mode=「InProc | StateServer| SQLServer」>
<sessionState stateConnectionString="tcpip=127.0.0.1:42424" mode="StateServer"/>
建立數據庫腳本文件在C:\Windows\Microsoft.NET\Framework\v4.0.30319下的:InstallPersistSqlState.sql和InstallSqlState.sql
能夠用下面命令安裝保存Session的數據庫,sa,master aspbetdb用戶名,密碼,數據庫
aspnet_regsql -U sa -P master –ssadd -sstype c -d aspnetdb
必定要開數據庫的TCPIP鏈接,不然不能建立成功
web.config能夠配置成:
<sessionState sqlConnectionString="server=.;database=aspnetdb;uid=sa;pwd=;" allowCustomSqlDatabase="true" mode="SQLServer"/>
七、Cache
<%@ OutputCache Duration="60" VaryByParam="none" %>
VaryByParam
是指頁面根據使用 POST 或 GET 發送的名稱/值對(參數)來更新緩存的內容,多個參數用分號隔開。若是不但願根據任何參數來改變緩存內容,請將值設置爲 none。若是但願經過全部的參數值改變都更新緩存,請將屬性設置爲星號 (*)。
例如: http://localhost:1852/WebForm.aspx?p=1
則能夠在WebForm1.aspx頁面頭部聲明緩存:
<%@ OutputCache Duration="60" VaryByParam="p" %>
以上代碼設置頁面緩存時間是60秒,並根據p參數的值來更新緩存,即p的值發生變化才更新緩存。
若是一直是WebForm1.aspx?p=1訪問該頁,則頁面會緩存當前數據,當p=2時又會執行後臺代碼更新緩存內容。
若是有多個參數時,如:http://localhost:1852/WebForm.aspx?pp=1&ln=1
能夠這樣聲明:<%@ OutputCache Duration="60" VaryByParam="pp;ln" %>
根據控件ID緩存<%@ OutputCache Duration="60" VaryByControl="ID" %>
在WebConfig中配置,直接讀取配置文件(指令集:<%@ OutputCache CacheProfile=」cache10」%>)
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="cache10" duration="10" varyByParam="none" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
數據庫緩存依賴:
實現步驟:
下面就讓咱們看一下如何實現數據庫緩存依賴功能:
第一步: 修改web.config,讓項目啓用SqlCacheDependency 。
將下列代碼加入web.config的<system.web>節:
<?xml version="1.0"?> <configuration> <appSettings/> <connectionStrings> <add name="connectionstring" connectionString="data source=127.0.0.1;initial catalog=Test;user id=sa;password=" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <caching> <sqlCacheDependency enabled="true" pollTime="6000"> <databases> <add name="Test" connectionStringName=" connectionstring " /> </databases> </sqlCacheDependency> </caching> </system.web> </configuration>
|
這裏的connectionStringName指定了在<connectionStrings>中添加的某一個鏈接字符串。name則是爲該SqlCacheDependency起的名字,這個名字將在第3步中用到。
SqlCacheDependency類會自動完成對此配置節信息的讀取以創建和數據庫之間的聯繫。
注意: 在<databases>節的<add name=" Test" connectionStringName=" connectionstring" />中的name屬性值必須和第三步的Page_Load代碼中System.Web.Caching.SqlCacheDependency("Test", "依賴的表名稱(這裏使用Contact)"); 中的第一個參數(數據庫名稱)相一致。 |
第二步:執行下述命令,爲 數據庫啓用緩存依賴。
若是要配置SqlCacheDependency,則須要以命令行的方式執行。
aspnet_regsql.exe工具位於Windows\\Microsoft.NET\\Framework\\[版本]文件夾中。
aspnet_regsql -C "data source=127.0.0.1;initial catalog= Test;user id=sa;password=master" -ed -et -t " Contact "
參數-C後面的字符串是鏈接字符串(請替換成本身所須要的值),
參數-t後面的字符串是數據表的名字。
命令執行後,在指定的數據庫中會多出一個AspNet_SqlCacheTablesForChangeNotification表。
第三步:在代碼中使用緩存,併爲其設置SqlCacheDependency依賴:
public static void SetCache(string CacheKey, object objObject, System.Web.Caching.CacheDependency dep) { System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert( CacheKey, objObject, dep, System.Web.Caching.Cache.NoAbsoluteExpiration,//從不過時 System.Web.Caching.Cache.NoSlidingExpiration,//禁用可調過時 System.Web.Caching.CacheItemPriority.Default, null); } protected void Page_Load(object sender, EventArgs e) { string CacheKey = "cachetest"; object objModel = GetCache(CacheKey);//從緩存中獲取 if (objModel == null)//緩存裏沒有 { objModel = GetData();//把當前時間進行緩存 if (objModel != null) { //依賴數據庫Test中的Contact表變化 來更新緩存 System.Web.Caching.SqlCacheDependency dep = newSystem.Web.Caching.SqlCacheDependency("Test", " Contact "); SetCache(CacheKey, objModel, dep);//寫入緩存 } } rpdata.DataSource = (DataSet)objModel; rpdata.DataBind(); }
八、IIS網站發佈-自定義domain
將網站部署到IIS的方式演示
修改C:\Windows\System32\Drivers\etc下的hosts文件
將127.0.0.1 www.stud.com
修改IIS站點的綁定
九、簡單示例讀寫xml文件
①能夠用XmlSerializer序列化 ②XMLDocument 寫: XmlDocument xml= new XmlDocument(); XmlDeclaration xdec= xml.CreateXmlDeclaration("1.0", "utf-8", "yes"); xml.AppendChild(xdec); XmlElement rootElement = xml.CreateElement("root"); xml.AppendChild(rootElement); XmlElement subElement = xml.CreateElement("subEle"); subElement.SetAttribute("name", "kk"); rootElement.AppendChild(subElement); xml.Save(@"c:\a.xml"); 讀: XmlDocument doc = new XmlDocument(); doc.Load(""); XmlElement ele= doc.DocumentElement;//獲取根節點 XmlNodeList list= ele.ChildNodes;//獲取全部子節點 foreach (XmlNode item in list) { if (item.NodeType==XmlNodeType.Element)//判斷是元素節點才操做 { } } 搜索指定節點,進行修改操做 doc.GetElementsByTagName("name");//獲取指定名字的所有節點 ③XDocument 寫: XDocument xml = new XDocument(); XDeclaration dec = new XDeclaration("1.0","utf-8",」no」); xml.Add(dec); XElement ele = new XElement("root"); xml.Add(ele); ele.SetElementValue("", "");//也能夠這樣建立 xml.Save("c:\\x.xml"); 讀: XDocument doc = XDocument.Load("");//加載指定的xml XElement root= doc.Root;//獲取根節點 root.Elements("name");//獲取根節點下的name名字的節點 搜索指定節點,進行修改操做: XDocument doc = XDocument.Load("");//加載指定的xml XElement root = doc.Root;//獲取根節點 root.Descendants().Where (c=>c.Attribute("").ToString()==""); // 按文檔順序返回此文檔或元素的子代節點集合。 ④Xpath 路徑表達式 / --從根目錄開始 //aaa --找到整篇文檔的aaa全部節點 //* --找到全部任何元素 //aaa/bbb --找到整篇文檔的aaa全部節點中的bbb節點,bbb節點屬於aaa的才能找到 /aaa/bbb/* *表明所屬節點的全部 /*/*/*/bbb /aaa/bbb[0] aaa節點下的第一個bbb /aaa/bbb[last()] aaa節點下的最後一個bbb //@id --@表明屬性 ,選擇全部元素中所具備id屬性的屬性,不是查找元素 //BBB[@id] --在有id屬性的BBB元素 用C#獲取:XMLDocument document=new XMLDocument(); Document.load(「aa.xml」); Document.SelectNodes(「/Users/user[id=3]」);//就是用這種語法,更新也是setattribute
十、有潛在的危險Request.Form值
在頁面的指令集中使用VaildataRequest=false就行,不過有些低版本不行,還得在配置文件中配置<httpRuntime requestValidationMode="2.0"/>
十一、配置跳轉到同一的錯誤頁面,MVC中的配置同樣
<system.web>
<customErrors mode="On" defaultRedirect="Error"></customErrors>
</system.web>
部署網站的時候mode必定爲false或者remote。defaultRedirect是跳轉的頁面
十二、<configSections> //必定緊貼configuration這個節點,不然會報錯
1三、重要:優化:在指定的bin目錄下的指定程序集中查找,這樣就不用在每一個程序集中一一查找:
下面表示直接在CRM.Test 的dll中查找。
<object id="myAnimal" type="TestSpring.Dog,CRM.Test" singleton="false">