配置webconfig


記錄下webconfig的配置(復制很久的筆記):

1、 配置Session在url傳遞

在web.config中的 <system.web> 節點下添加,手動修改session的相關設置

<sessionState timeout="5" cookieless="true"> </sessionState>

2、 配置上傳文件大於4M,里面是字節數,比如下面10M是1024*1024*10

<system.web>

    <httpRuntime targetFramework="4.5" maxRequestLength="10485760"/>

</system.web>

3、比如上傳1g的內容。請求的篩選模塊是被直接拒絕,不會到后台指定的頁面的,跟上面的界面配置要相同才行

<configuration>

  <system.webServer>

<security>

    <requestFiltering>

      <requestLimits maxAllowedContentLength="1073741824"></requestLimits>

    </requestFiltering>

  </security>

  </system.webServer>

</configuration>

4、自定義一般處理程序類及配置

 

①新建一個類,繼承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>

5、配置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)

6、進程外Session

使用狀態服務器存session

注意session存儲的對象必須支持可序列化,即類上面增加[Serializable]特性

<sessionState stateConnectionString="tcpip=127.0.0.1:42424" mode="StateServer"/>

修改默認端口:

 

使用數據庫存session

1、  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"/>

7、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();

}

 

  

8、IIS網站發布-自定義domain

將網站部署到IIS的方式演示

修改C:\Windows\System32\Drivers\etc下的hosts文件

將127.0.0.1  www.stud.com

修改IIS站點的綁定

 

 

9、簡單示例讀寫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

 

10、有潛在的危險Request.Form值

在頁面的指令集中使用VaildataRequest=false就行,不過有些低版本不行,還得在配置文件中配置<httpRuntime requestValidationMode="2.0"/>

 

11、配置跳轉到同一的錯誤頁面,MVC中的配置一樣

<system.web>

    <customErrors mode="On" defaultRedirect="Error"></customErrors>

  </system.web>

部署網站的時候mode一定為false或者remote。defaultRedirect是跳轉的頁面

12、<configSections>    //一定緊貼configuration這個節點,否則會報錯

13、重要:優化:在指定的bin目錄下的指定程序集中查找,這樣就不用在每個程序集中一一查找:

下面表示直接在CRM.Test 的dll中查找。

   <object id="myAnimal" type="TestSpring.Dog,CRM.Test" singleton="false">


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM