zoukankan      html  css  js  c++  java
  • 配置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:WindowsMicrosoft.NETFrameworkv4.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:WindowsSystem32Driversetc下的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">

  • 相关阅读:
    【前端积累】Awesome初识
    【Python系列】Python3获取控制台输入
    【linux系列】Centos下安装mysql数据库
    Intellij 部署项目java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    【大数据系列】节点的退役和服役[datanode,yarn]
    【大数据系列】使用api修改hadoop的副本数和块大小
    【规范】alibaba编码规范阅读
    【大数据系列】hadoop上传文件报错_COPYING_ could only be replicated to 0 nodes
    【分布式系列之ActiveMq】ActiveMq入门示例
    类的生命周期
  • 原文地址:https://www.cnblogs.com/entclark/p/9098101.html
Copyright © 2011-2022 走看看