配置webconfig

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

配置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:告诉处理机制,什么样的url才会给 type指定的类型类处理
参数verb:告诉处理机制,是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>
<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\\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。

如果希望通过所有的参数值改变都更新缓存,请将属性设置为星号 (*)。

<%@ OutputCache Duration="60" VaryByParam="p" %>
以上代码设置页⾯缓存时间是60秒,并根据p参数的值来更新缓存,即p的值发⽣变化才更新缓存。

如果⼀直是WebForm1.aspx?p=1访问该页,则页⾯会缓存当前数据,当p=2时⼜会执⾏后台代码更新缓存内容。

可以这样声明:<%@ 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>
数据库缓存依赖:
数据库缓存依赖
实现步骤:
下⾯就让我们看⼀下如何实现数据库缓存依赖功能:
第⼀步:修改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\\\\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
修改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">。

相关文档
最新文档