配置webconfig

記錄下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">

相關文章
相關標籤/搜索