web.config学习笔记:
Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。
configSections节:自定义配置节声明:<section name="配置节名称" type="处理该节中配置数据的dll、类名称"/>
appSettings节:<add key="" value=""/> 程序访问appSettings中的键值对:System.Configuration.ConfigurationSettings.AppSettings["key"];
connectionStrings:数据库连接字符串配置节:例如:sql常用配置:<add name="sql" connectionString="server=127.0.0.1;database=fgwcms;uid=sa;pwd=sa" providerName="System.Data.SqlClient"/> 程序访问:ConfigurationManager.ConnectionStrings["sql"];
system.web节:默认配置:包含的常用的配置节如下:
pages 标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等);每个页面的控件的默认引入配置:<pages><controls> <add assembly="程序集" namespace="命名空间" tagPrefix="控件前置名"/></controls></pages>
customErrors为 ASP.NET 应用程序提供有关自定义错误信息的信息。<customErrors mode="RemotOnly:向远程客户端显示自定义错误,主机显示asp.net错误;on:启用;off:关闭 "defaultRedirect="定向"><error statusCode="404" redirect="FileNotFound.htm"/>403:禁止访问;404未找到;500:内部服务器错误;
compilation 配置 ASP.NET 使用的所有编译设置。默认的debug属性为“True” 下包含引入的程序集信息
sessionState为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)mode="InProc"表示:在本地储存会话状态 StateServer:用服务存储会话状态cookieless="true"表示:如果用户浏览器不支持Cookie时启用会话状态(默认为False)timeout="20"表示:会话可以处于空闲状态的分钟数
<httpRuntime maxRequestLength(大小="4096" executionTimeout="60" appRequestQueueLimit="100 maxRequestLength"/>
httpHandlers<add name verb="*" type="对应ihttpHandler实现程序集、类" path="">verb:动作,post,get等
httpModules <add name="" type="对应IHttpModule实现类"/>
本文链接
序列化和反序列化我们可能经常会听到,其实通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。
我想最主要的作用有:
1、在进程下次启动时读取上次保存的对象的信息
2、在不同的AppDomain或进程之间传递数据
3、在分布式应用系统中传递数据
......
在C#中常见的序列化的方法主要也有三个:BinaryFormatter、SoapFormatter、XML序列化
本文就通过一个小例子主要说说这三种方法的具体使用和异同点
这个例子就是使用三种不同的方式把一个Book对象进行序列化和反序列化,当然这个Book类首先是可以被序列化的。至于怎么使一个类可以序列化可以参见:C#强化系列文章一:ViewState使用兼谈序列化
using System;
using System.Collections;
using System.Text;
namespace SerializableTest
{
[Serializable]
public class Book
{
public Book()
{
alBookReader = new ArrayList();
}
public string strBookName;
[NonSerialized]
public string strBookPwd;
private string _bookID;
public string BookID
{
get { return _bookID; }
set { _bookID = value; }
}
public ArrayList alBookReader;
private string _bookPrice;
public void SetBookPrice(string price)
{
_bookPrice = price;
}
抛出的异常信息:异常详细信息:
System.ArgumentOutOfRangeException: “ddlTotalCostDiscount ”有一个无效 SelectedValue,因为它不在项目列表中。
原先给DropDownList这样赋值:
this.ddlTotalCostDiscount.SelectedValue = obj.TotalCostDiscount.ToString();
改成这样赋值:
ddlTotalCostDiscount.SelectedIndex = ddlTotalCostDiscount.Items.IndexOf(ddlTotalCostDiscount.Items.FindByValue(obj.TotalCostDiscount.ToString()));
就是如果通过FindByValue没有找到指定项则为null,而Items.IndexOf(null)会返回-1.
本文链接