精华内容
下载资源
问答
  • WebConfig

    2015-10-27 09:27:00
    任意建立一个项目,新建一个类,或者直接在App_Code里新建一个类,如下: namespace   ConfigurationSectionTest {   ///   ///WebSiteInfoHandler 的摘要说明   ///   public   class ...

    1,什么是web.config?

    MSDN上说:"ASP.NET 配置数据存储在 XML 文本文件中(每个文件都名为 Web.config)。 Web.config 文件可以出现在 ASP.NET 应用程序的多个目录中。"。  

    在园子里有为大神的说话我觉得也计较容易理解“web.config是asp.net中保存配置信息(比如数据库连接字符串等)的重要文件。它是基于xml的文本文件方式放在Web应用程序的任何目录中,并且默认不随源文件编译到Dll中,而运行环境随时监视着它是否有改变,一但有变动,系统会自动重新加载里面的最新内容。”。

    说到底就是网站的配置文件了。

    2,web.config的加载顺序

    前边既然提到了web.config可以在一个网站里出现多个,那在网站运行时候服务器是怎样去执行他们的呢?这就是要了解到web.config的加载顺序了。

    相信很多新手特别是没有好好接触过web.config知识的童鞋一直都对一个asp.net网站有很多个配置文件感到棘手,即新奇又感到迷茫,反正我以前是这样的。但是现在知道了下面这些知识就不会了。

    IIS在Asp.net网站启动时,会加载配置文件中的配置信息,然后缓存这些信息,不会每次要用都去读取配置文件,只是IIS会随时监视着这些文件的变化,一量有变化,它会重新去读取并缓存配置信息。

    Asp.net网站运行时会按照以下方式加载配置文件中的节点信息:

    1) 如果在当前运行页面所在的目录下有web.config文件,则查找是否存在所需要的节点,如果存在则返回结果,并停止下一步地查找。

    2) 如里所在目录不存在web.config配置或者配置文件里没有所需要的节点,则查找它所在的上一级目录的配置文件中的节点,直到网站根目录。

    3) 如果网站根目录中都不存在web.config或者所需要的配置节点,转而到“windows目录\Microsoft.NET\Framework\对应.net版本\config\web.config”中去查找。

    4) 如果第3条中还没找到,继续到“windows目录\Microsoft.NET\Framework\对应.net版本\config\machine.config”中去查找。

    5) 如果还没找到,那就报错吧。

    可能对于第 3 步, 第 4 步有好多童鞋该不明白了,那个是 iis服务器的默认配置目录。可以这样简单的理解:我们让网站去找一个配置信息,那他肯定就会一层一层的去找配置文件里的节点名称,当网站目录里没有找到的时候,服务器会找自己的配置文件。当这些都没找到,报错吧。

    这样理解了,就对一个asp.net网站拥有多个配置文件不足为奇了吧。其实对于上边说的这个问题,我觉得是在项目开发过程中养成良好的编程习惯就可以完全避免了。在配置文件的表示字段上,尽量不要有重复的。

    3,web.config节点介绍。

    这个才是正文吖。因为web.config节点有很多需要知道的地方,我们这里只对那些常用的节点做介绍。

    前边说了,Web.config文件是一个xml文本文件。所以它的配置信息都是以节点形式存在的。

    根节点为<configuration>,常见的子节点有:<configSections> ,<appSettings> <connectionStrings>,<location>,<system.web>等等。

    <configSections />

    这是什么玩意?

    我们平时在网站里用到的一些对象或者数据,是配置在web.config里的,但是配在哪呢?就是配置在这个configSections节点下。

    web.config是网站运行在iis服务器上的配置文件,他怎么可能允许我们随随便便的配置我们自己的节点呢,不行你自己试试, 在任何位置添加任何没有申明的节点, 系统都不会让你通过, 更不会让你去读它了, 当然, 你打算在别的xml文件里添加节点, 然后读出来, 创建对象, 这个没问题。不过这样一样也就失去了配置文件的意义了。所以,为了系统能有组织的管理用户的在配置文件里的自定义信息, 就要使用configSections了。

    configSections 元素指定了配置节和处理程序声明。由于 ASP.NET 不对如何处理配置文件内的设置作任何假设,因此这非常必要。但 ASP.NET 会将配置数据的处理委托给配置节处理程序。配置结构信息如下:

    <configSections>

    <!--定义配置节处理程序与配置元素之间的关联。-->

    <section />

    <!--定义配置节处理程序与配置节之间的关联。-->

    <sectionGroup />

    <!--移除对继承的节和节组的引用。-->

    <remove />

    <!--移除对继承的节和节组的所有引用,只允许由当前 section 和 sectionGroup 元素添加的节和节组。-->

    <clear/>

    </configSections>

    每个 section 元素标识一个配置节或元素以及对该配置节或元素进行处理的关联 ConfigurationSection 派生类。可以在 sectionGroup 元素中对 section 元素进行逻辑分组,以对 section 元素进行组织并避免命名冲突。section 和 sectionGroup 元素包含在 configSections 元素中。

    如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素。

    下面我们来示例写一个自定义配置信息,并完成它的SectionHandler.

    1,首先我们在<configuration>节点下添加configSections。

    <configSections>
        <sectionGroup name="WebSiteInfo">
            <section name="basicInfo" type="ConfigurationSectionTest.WebSiteInfoHandler"/>
            <section name="fileUpload" type="ConfigurationSectionTest.WebSiteInfoHandler"/>
        </sectionGroup>
    </configSections>

    <WebSiteInfo>
        <basicInfo>
            <add key="name" value="imecc studio"/>
            <add key="version" value="1.0"/>
        </basicInfo>
        <fileUpload>
            <add key="fileUploadPath" value="E:\\MyHomePage\\Web\\Upload\\"/>
            <add key="fileUploadSizeMax" value="2M"/>
        </fileUpload>
    </WebSiteInfo>

    说明: 在configSections下添加一个section/sectionGroup子节点, 写好标示名和类型, 然后在紧接这下面实现这个标示名的细节内容,就是我们当初想添加的自己的自定义信息了.

    以上我们在WebSiteInfo节点下定义了两个节点basicInfo和fileUpload,并定义了节点处理程序类ConfigurationSectionTest.WebSiteInfoHandler,并且随后运用了我们定义的节点。

    2,我们来看看节点处理程序ConfigurationSectionTest.WebSiteInfoHandler。

    任意建立一个项目,新建一个类,或者直接在App_Code里新建一个类,如下:

    namespace  ConfigurationSectionTest
    {
         /// <summary>
         ///WebSiteInfoHandler 的摘要说明
         /// </summary>
         public  class  WebSiteInfoHandler : IConfigurationSectionHandler
         {
             public  WebSiteInfoHandler()
             {
                 //
                 //TODO: 在此处添加构造函数逻辑
                 //
     
             }
     
             #region IConfigurationSectionHandler 成员
     
             public  object  Create( object  parent, object  configContext, System.Xml.XmlNode section)
             {
                //这里我们首先返回个hello,并且在此处设置一个断点。看看程序什么时候执行到这。
                 return  "hello" ;
             }
     
             #endregion
         }
     
    }

    可以看到这个处理程序实现了一个叫做IConfigurationSectionHandler的接口,并且里边有个唯一的方法 public object Create(object parent, object configContext, XmlNode section), 这里的最后一个参数就是自定义信息那个节点了,  通过处理你配置的这堆信息, 返回你要的对象.

    3,要使用这个返回的对象,通过System.Configuration.ConfigurationManager.GetSection()方法.

      我们在Default.aspx的Page_Load事件处理程序中去访问我们自定义的节点,用ConfigurationSettings.GetConfig("WebSiteInfo/basicInfo");注意参数的格式。

    这里是 section Group Name/section ,如果是单独的section,就只传这个section的name就好了。

    protected void Page_Load(object sender, EventArgs e)
    {
        Object o = ConfigurationSettings.GetConfig("WebSiteInfo/basicInfo");
    }

    在Page_Load的代码段里打个断点我们启动调试,看到程序首先执行到ConfigurationSettings.GetConfig("WebSiteInfo/basicInfo");这句。

    然后执行到ConfigurationSectionTest.WebSiteInfoHandler中的Create函数。

    我们再看看这时处理函数中参数的值:

    parent为null

    configContext 为配置上下文对象。

    section 的InnerXml为<add key="name" value="huchen's homepage" /><add key="version" value="1.0" />

    按F11继续执行return "hello", 继续执行...

    在执行到Object o = ConfigurationSettings.GetConfig("WebSiteInfo/basicInfo")后面的“}“,我们发现o的值为”hello”。 

     

    相信您已经明白的差不多了,当读取自定义节点的内容时,程序去执行我们定义的节点处理程序,并把节点中的内容传给Create函数中的参数。然后我们在Create中自己处理节点下的内容,并返回我们格式化后的节点内容给调用者,也就是ConfigurationSettings.GetConfig("WebSiteInfo/basicInfo")。

    注意:程序第一次运行的时候可以调试到Create这个方法,第二次运行的时候就调试不到了,这是因为配置文件时缓存了起来.

    只有改变了配置文件或者继承自IConfigurationSectionHandler的类才会重新调用.

    好,知道这些以后,我们就来完善我们的代码,我们在Create中处理传进来的节点内容。

    为了简单起见,我们引入两个类NameValueCollection,NameValueSectionHandler。

    NameValueCollection:表示可通过键或索引访问的关联 String 键和 String 值的集合。

    NameValueSectionHandler:提供配置节中的名称/值对配置信息。NameValueSectionHandler 这个类也继承IConfigurationSectionHandler
    反编译可以看出NameValueSectionHandler 的Create方法把参数section的结果转化成了一个集合,就是NameValueCollection。

    那么我们可以在节点处理程序中的Create函数中写如下代码:

    NameValueCollection configs;
    NameValueSectionHandler baseHandler = new NameValueSectionHandler();
    configs =(NameValueCollection)baseHandler.Create(parent,configContext,section);
    Return configs;

    这样我们就可以这样访问我们的节点了:

    string myWebSiteName = ((NameValueCollection)ConfigurationSettings.GetConfig("WebSiteInfo/basicInfo"))["name"];

    在Default.aspx的Page_Load事件处理程序中添加如下代码:

    string myWebSiteName = ((NameValueCollection)ConfigurationSettings.GetConfig("WebSiteInfo/basicInfo"))["name"];
    Response.Write(myWebSiteName);

    Ctrl+F5运行,可以看到页面输出了imecc studio

    <appSettings />

    该节点下主要用来存储asp.net应用程序的一些配置信息,也可以把数据库连接字符串也放在这里,不过.net2.0提供了connectionStrings节点,所以数据库连接字符串还是不建议放在这里,下面为一个图片类型的实例。

    <appSettings>

    <!--图片类型扩展名-->

    <add key="ImgType" value=".bmp;.jpg;.gif;.png"/>

    </appSettings>

    调用方法为:

    string ImgType = ConfigurationManager.AppSettings["ImgType"];

    <connectionStrings />

       connectionStrings和appSettings类似,不过用于保存配置数据库连接信息,下面给一个实例。

    <connectionStrings>

    <add name="SqlserverConnStr" connectionString="Data Source=Aron1;Initial Catalog= pubs;UserId=sa;Password=asdasd;"/>

    <add name="OrcleConnStr" connectionString="Provider=msdaora;Data Source= MyOracleDB;UserId=UserName;Password=asdasd;"/>

    </connectionStrings>

    调用方式为:

    string connStr = ConfigurationManager.ConnectionStrings["SqlserverConnStr"].ConnectionString;

    <system.web />

    <system.web>为.net应用程序的行为方式配置节点,该节点包含很多子节点,很多子节点已经由.net配置好了,这里我们只来看看一些重要的配置节点。

    <compilation />节点
    <compilation>节点配置 ASP.NET 使用的所有编译设置。

    默认的debug属性为“true”,即允许调试,在这种情况下会影响网站的性能,所以在程序编译完成交付使用之后应将其设为“false”。

     <customErrors />

    该节点用于定义一些自定义错误信息。

    此节点有Mode和defaultRedirect两个属性,其中defaultRedirect属性是一个可选属性,表示应用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误。Mode属性是一个必选属性,它有三个可能值,它们所代表的意义分别如下:
    Mode 说明
    On 表示在本地和远程用户都会看到自定义错误信息。
    Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息。
    RemoteOnly 表示本地用户将看到详细错误信息,而远程用户将会看到自定义错误信息。
    这里有必要说明一下本地用户和远程用户的概念。当我们访问asp.net应用程时所使用的机器和发布asp.net应用程序所使用的机器为同一台机器时成为本地用户,反之则称之为远程用户。在开发调试阶段为了便于查找错误Mode属性建议设置为Off,而在部署阶段应将Mode属性设置为On或者RemoteOnly,以避免这些详细的错误信息暴露了程序代码细节从而引来黑客的入侵。

    值得一提的是:如果说配置的跳转页面也发生错误,那么网站就没办法处理异常了。

    <authentication />

    该节点为配置 ASP.NET 身份验证方案,该方案用于识别查看 ASP.NET 应用程序的用户。Mode属性包含四种身份验证模式:

    1. Windows(默认)

    将 Windows 验证指定为默认的身份验证模式。将它与以下任意形式的 Microsoft Internet 信息服务 (IIS) 身份验证结合起来使用:基本、摘要、集成 Windows 身份验证 (NTLM/Kerberos) 或证书。在这种情况下,您的应用程序将身份验证责任委托给基础 IIS。

    2. Forms

    将 ASP.NET 基于窗体的身份验证指定为默认身份验证模式。

    3. Passport

    将 Microsoft Passport Network 身份验证指定为默认身份验证模式。

    4. None

    不指定任何身份验证。您的应用程序仅期待匿名用户,否则它将提供自己的身份验证。

    下面的代码示例演示如何为基于窗体的身份验证配置站点、指定传输来自客户端的登录信息的 Cookie 的名称以及指定当初始身份验证失败时使用的登录页的名称。必须将 authorization 节包含在内才能要求对所有用户进行 Forms 身份验证,并拒绝匿名用户访问站点。

    <configuration>

    <system.web>

    <authentication mode="Forms">

    <forms name="401kApp" loginUrl="/login.aspx"/>

    </authentication>

    <authorization>

    <deny users="?"/>

    </authorization>

    </system.web>

    </configuration>

    Login.aspx中登陆通过:

    FormsAuthentication.RedirectFromLoginPage(this.TextBox1.Text, true);

    <httpHandlers />

    HttpHandlers可用于根据请求中指定的 URL 和 HTTP 谓词将传入的请求映射到相应的处理程序。也就是说对于网站的某一个请求,我们可以自定义他的一般处理程序。

    相信有很多新手在刚刚入职的时候,会发现很多在学校学的知识(很多都是托控件)到了公司基本上就没有用的地方,打开aspx对应的aspx.cs后置文件,里边一句自己写的代码都找不到。

    很是郁闷。其实很多都是用到了这个东西。

    看下边这个例子:

    <system.web>
    <httpHandlers>
    <add path="httpHandlerTest.ashx" verb="*" type="aspDoNetTest.Handler.httpHandlerTest_Handler"/>
    </httpHandlers>
    </system.web>

    我们配置了一个Test的handler的一般处理程序,用于实现自定义的用户登录。

    传统的我们在处理的时候,会在页面上托两个textbox,再来个Button,然后再Button的click event里写登录的逻辑。

    但是这样配置的一个,当我们请求httpHandlerTest.ashx的时候,就会走我们的处理程序。

    namespace  aspDoNetTest.Handler
    {
         public  class  httpHandlerTest_Handler:IHttpHandler
         {
             public  void  ProcessRequest(HttpContext context)
             {
                 string  action =context.Request.QueryString[ "action" ];
     
                 switch  (action)
                 {
                     case  "Login" :
                         Login(context);
                         break ;
                     case  "1" :
                         break ;
                     case  "2" :
                         break ;
                     default :
                         break ;
                 }
             }
     
             private  void  Login(HttpContext context)
             {
                 string  UserName = context.Request.QueryString[ "UserName" ];
             }
     
             public  bool  IsReusable
             {
                 get
                 {
                     return  true ;
                 }
             }
         }
    }

      看到httpHandlerTest_Handler 类实现了IHttpHandler 接口。关于这个接口的知识,可以在网上找到他的专一学习知识。

     <httpModules />

       大家对于Global.asax应该挺熟悉的吧。对于那里边的HttpApplication时间,有些时候可能并不是我们想要的。这时候httpModules就用上了。

    对于httpModules,我们可以理解为 建立一个通用的可用被插入任何Web应用程序的HttpApplication事件钩子。

    使用HttpModule,是可复用的,不需要特定语应用程序代码的,只需要web.config中的一个条目。

    举个例子:实现在每个页面上添加了一句话:Add BeginRequest by MyHttpModule!

     

    <system.web>

    <httpModules>
    <add name="MyHttpModule" type="aspDoNetTest.Handler.HttpModule"/>
    </httpModules>

    </system.web>

     

    namespace  aspDoNetTest.Handler
    {
         public  class  HttpModule:IHttpModule
         {
             public  void  Dispose()
             {
                 
             }
     
             public  void  Init(HttpApplication context)
             {
                 context.BeginRequest += new  EventHandler(context_BeginRequest);
             }
             void  context_BeginRequest( object  sender, EventArgs e)
             {
                 HttpApplication application = (HttpApplication)sender;
                 HttpContext context = application.Context;
                 context.Response.Write( "Add BeginRequest by MyHttpModule!" );
             }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
         }
    }

      再运行网站,不论请求任何一个页面,都会在网站一开始请求的时候,再页面上输出 Add BeginRequest by MyHttpModule!

    <location />

    Location节点是用来指定子配置的资源。如果在asp.net应用程序中想对某个目录做特殊处理,则可以用该节点来实现.举个例子:

    下面的代码示例演示如何仅将指定页的上载文件大小限制设置为 128 KB。

    <configuration>

    <location path="UploadPage.aspx">

    <httpRuntime maxRequestLength="128"/>

    </location>

    </configuration>

    转载于:https://www.cnblogs.com/zylong/p/4913208.html

    展开全文
  • webConfig

    2009-12-20 02:51:00
     你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。 Dim sconstr As String = ConfigurationSettings.AppSettings("SconStr") Dim...

    一、认识Web.config文件

     

      Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认 的
    Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。

      在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。

      二、web.config配置文件(默认的配置设置)以下所有的代码都应该位于

    <configuration>
    <system.web>

      和

    </system.web>
    </configuration>

      之间,出于学习的目的下面的示例都省略了这段XML标记

      1、<authentication> 节

      作用:配置 ASP.NET 身份验证支持(为Windows、Forms、PassPort、None四种)。该元素只能在计算机、站点或应用程序级别声明。< authentication> 元素必需与<authorization> 节配合使用。

      示例:

      以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。

    <authentication mode="Forms" >
    <forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>

    </authentication>

      其中元素loginUrl表示登陆网页的名称,name表示Cookie名称

      2、<authorization> 节

      作用:控制对 URL 资源的客户端访问(如允许匿名用户访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。必需与<authentication> 节配合使用。

      示例:以下示例禁止匿名用户的访问

    <authorization>
    <deny users="?"/>
    </authorization>

      注:你可以使用user.identity.name来获取已经过验证的当前的用户名;可以使用
    web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.具体的实例请参考:

      Forms验证 http://www.fanvb.net/websample/dataauth.aspx

      3、<compilation>节

      作用:配置 ASP.NET 使用的所有编译设置。默认的debug属性为“True”.在程序编译完成交付使用之后应将其设为True(Web.config文件中有详细说明,此处省略示例)

      4、<customErrors>

      作用:为 ASP.NET 应用程序提供有关自定义错误信息的信息。它不适用于 XML Web services 中发生的错误。

      示例:当发生错误时,将网页跳转到自定义的错误页面。

    <customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly">
    </customErrors>

      其中元素defaultRedirect表示自定义的错误网页的名称。mode元素表示:对不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。

      5、<httpRuntime>节

      作用:配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。

      示例:控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100

    <httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/>

      6、 <pages>

      作用:标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等)。<pages>可以在计算机、站点、应用程序和子目录级别声明。

      示例:不检测用户在浏览器输入的内容中是否存在潜在的危险数据(注:该项默认是检测,如果你使用了不检测,一要对用户的输入进行编码或验证),在从客户端回发页时将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。(注:该项默认是不验证)

    <pages buffer="true" enableViewStateMac="true" validateRequest="false"/>

      7、<sessionState>

      作用:为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。

      示例:

    <sessionState mode="InProc" cookieless="true" timeout="20"/>
    </sessionState>

      注:

      mode="InProc"表示:在本地储存会话状态(你也可以选择储存在远程服务器或SAL服务器中或不启用会话状态)

      cookieless="true"表示:如果用户浏览器不支持Cookie时启用会话状态(默认为False)

      timeout="20"表示:会话可以处于空闲状态的分钟数

      8、<trace>

      作用:配置 ASP.NET 跟踪服务,主要用来程序测试判断哪里出错。

      示例:以下为Web.config中的默认配置:

    <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

      注:

      enabled="false"表示不启用跟踪;requestLimit="10"表示指定在服务器上存储的跟踪请求的数目

      pageOutput="false"表示只能通过跟踪实用工具访问跟踪输出;

      traceMode="SortByTime"表示以处理跟踪的顺序来显示跟踪信息

      localOnly="true" 表示跟踪查看器 (trace.axd) 只用于宿主 Web 服务器

      三、自定义Web.config文件配置节

      自定义Web.config文件配置节过程分为两步。

      一是在在配置文件顶部 <configSections> 和 </configSections>标记之间声明配置节的名称和处理该节中配置数据的 .NET Framework 类的名称。

      二是在 <configSections> 区域之后为声明的节做实际的配置设置。

      示例:创建一个节存储数据库连接字符串

    <configuration>
    <configSections>
    <section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </configSections>

     <appSettings>
    <add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/>
    </appSettings>

     <system.web>
    ......
    </system.web>
    </configuration>

      四、访问Web.config文件

      你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。

    Dim sconstr As String = ConfigurationSettings.AppSettings("SconStr")
    Dim scon = New SqlConnection(sconstr)

     

      Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认 的
    Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。

      在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。

      二、web.config配置文件(默认的配置设置)以下所有的代码都应该位于

    <configuration>
    <system.web>

      和

    </system.web>
    </configuration>

      之间,出于学习的目的下面的示例都省略了这段XML标记

      1、<authentication> 节

      作用:配置 ASP.NET 身份验证支持(为Windows、Forms、PassPort、None四种)。该元素只能在计算机、站点或应用程序级别声明。< authentication> 元素必需与<authorization> 节配合使用。

      示例:

      以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。

    <authentication mode="Forms" >
    <forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>

    </authentication>

      其中元素loginUrl表示登陆网页的名称,name表示Cookie名称

      2、<authorization> 节

      作用:控制对 URL 资源的客户端访问(如允许匿名用户访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。必需与<authentication> 节配合使用。

      示例:以下示例禁止匿名用户的访问

    <authorization>
    <deny users="?"/>
    </authorization>

      注:你可以使用user.identity.name来获取已经过验证的当前的用户名;可以使用
    web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.具体的实例请参考:

      Forms验证 http://www.fanvb.net/websample/dataauth.aspx

      3、<compilation>节

      作用:配置 ASP.NET 使用的所有编译设置。默认的debug属性为“True”.在程序编译完成交付使用之后应将其设为True(Web.config文件中有详细说明,此处省略示例)

      4、<customErrors>

      作用:为 ASP.NET 应用程序提供有关自定义错误信息的信息。它不适用于 XML Web services 中发生的错误。

      示例:当发生错误时,将网页跳转到自定义的错误页面。

    <customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly">
    </customErrors>

      其中元素defaultRedirect表示自定义的错误网页的名称。mode元素表示:对不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。

      5、<httpRuntime>节

      作用:配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。

      示例:控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100

    <httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/>

      6、 <pages>

      作用:标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等)。<pages>可以在计算机、站点、应用程序和子目录级别声明。

      示例:不检测用户在浏览器输入的内容中是否存在潜在的危险数据(注:该项默认是检测,如果你使用了不检测,一要对用户的输入进行编码或验证),在从客户端回发页时将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。(注:该项默认是不验证)

    <pages buffer="true" enableViewStateMac="true" validateRequest="false"/>

      7、<sessionState>

      作用:为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。

      示例:

    <sessionState mode="InProc" cookieless="true" timeout="20"/>
    </sessionState>

      注:

      mode="InProc"表示:在本地储存会话状态(你也可以选择储存在远程服务器或SAL服务器中或不启用会话状态)

      cookieless="true"表示:如果用户浏览器不支持Cookie时启用会话状态(默认为False)

      timeout="20"表示:会话可以处于空闲状态的分钟数

      8、<trace>

      作用:配置 ASP.NET 跟踪服务,主要用来程序测试判断哪里出错。

      示例:以下为Web.config中的默认配置:

    <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

      注:

      enabled="false"表示不启用跟踪;requestLimit="10"表示指定在服务器上存储的跟踪请求的数目

      pageOutput="false"表示只能通过跟踪实用工具访问跟踪输出;

      traceMode="SortByTime"表示以处理跟踪的顺序来显示跟踪信息

      localOnly="true" 表示跟踪查看器 (trace.axd) 只用于宿主 Web 服务器

      三、自定义Web.config文件配置节

      自定义Web.config文件配置节过程分为两步。

      一是在在配置文件顶部 <configSections> 和 </configSections>标记之间声明配置节的名称和处理该节中配置数据的 .NET Framework 类的名称。

      二是在 <configSections> 区域之后为声明的节做实际的配置设置。

      示例:创建一个节存储数据库连接字符串

    <configuration>
    <configSections>
    <section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </configSections>

     <appSettings>
    <add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/>
    </appSettings>

     <system.web>
    ......
    </system.web>
    </configuration>

      四、访问Web.config文件

      你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。

    Dim sconstr As String = ConfigurationSettings.AppSettings("SconStr")
    Dim scon = New SqlConnection(sconstr)

     

      Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认 的
    Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。

      在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。

      二、web.config配置文件(默认的配置设置)以下所有的代码都应该位于

    <configuration>
    <system.web>

      和

    </system.web>
    </configuration>

      之间,出于学习的目的下面的示例都省略了这段XML标记

      1、<authentication> 节

      作用:配置 ASP.NET 身份验证支持(为Windows、Forms、PassPort、None四种)。该元素只能在计算机、站点或应用程序级别声明。< authentication> 元素必需与<authorization> 节配合使用。

      示例:

      以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。

    <authentication mode="Forms" >
    <forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>

    </authentication>

      其中元素loginUrl表示登陆网页的名称,name表示Cookie名称

      2、<authorization> 节

      作用:控制对 URL 资源的客户端访问(如允许匿名用户访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。必需与<authentication> 节配合使用。

      示例:以下示例禁止匿名用户的访问

    <authorization>
    <deny users="?"/>
    </authorization>

      注:你可以使用user.identity.name来获取已经过验证的当前的用户名;可以使用
    web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.具体的实例请参考:

      Forms验证 http://www.fanvb.net/websample/dataauth.aspx

      3、<compilation>节

      作用:配置 ASP.NET 使用的所有编译设置。默认的debug属性为“True”.在程序编译完成交付使用之后应将其设为True(Web.config文件中有详细说明,此处省略示例)

      4、<customErrors>

      作用:为 ASP.NET 应用程序提供有关自定义错误信息的信息。它不适用于 XML Web services 中发生的错误。

      示例:当发生错误时,将网页跳转到自定义的错误页面。

    <customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly">
    </customErrors>

      其中元素defaultRedirect表示自定义的错误网页的名称。mode元素表示:对不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。

      5、<httpRuntime>节

      作用:配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。

      示例:控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100

    <httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/>

      6、 <pages>

      作用:标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等)。<pages>可以在计算机、站点、应用程序和子目录级别声明。

      示例:不检测用户在浏览器输入的内容中是否存在潜在的危险数据(注:该项默认是检测,如果你使用了不检测,一要对用户的输入进行编码或验证),在从客户端回发页时将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。(注:该项默认是不验证)

    <pages buffer="true" enableViewStateMac="true" validateRequest="false"/>

      7、<sessionState>

      作用:为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。

      示例:

    <sessionState mode="InProc" cookieless="true" timeout="20"/>
    </sessionState>

      注:

      mode="InProc"表示:在本地储存会话状态(你也可以选择储存在远程服务器或SAL服务器中或不启用会话状态)

      cookieless="true"表示:如果用户浏览器不支持Cookie时启用会话状态(默认为False)

      timeout="20"表示:会话可以处于空闲状态的分钟数

      8、<trace>

      作用:配置 ASP.NET 跟踪服务,主要用来程序测试判断哪里出错。

      示例:以下为Web.config中的默认配置:

    <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

      注:

      enabled="false"表示不启用跟踪;requestLimit="10"表示指定在服务器上存储的跟踪请求的数目

      pageOutput="false"表示只能通过跟踪实用工具访问跟踪输出;

      traceMode="SortByTime"表示以处理跟踪的顺序来显示跟踪信息

      localOnly="true" 表示跟踪查看器 (trace.axd) 只用于宿主 Web 服务器

      三、自定义Web.config文件配置节

      自定义Web.config文件配置节过程分为两步。

      一是在在配置文件顶部 <configSections> 和 </configSections>标记之间声明配置节的名称和处理该节中配置数据的 .NET Framework 类的名称。

      二是在 <configSections> 区域之后为声明的节做实际的配置设置。

      示例:创建一个节存储数据库连接字符串

    <configuration>
    <configSections>
    <section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </configSections>

     <appSettings>
    <add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/>
    </appSettings>

     <system.web>
    ......
    </system.web>
    </configuration>

      四、访问Web.config文件

      你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。

    Dim sconstr As String = ConfigurationSettings.AppSettings("SconStr")
    Dim scon = New SqlConnection(sconstr)

      Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认 的
    Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。

      在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。

      二、web.config配置文件(默认的配置设置)以下所有的代码都应该位于

    <configuration>
    <system.web>

      和

    </system.web>
    </configuration>

      之间,出于学习的目的下面的示例都省略了这段XML标记

      1、<authentication> 节

      作用:配置 ASP.NET 身份验证支持(为Windows、Forms、PassPort、None四种)。该元素只能在计算机、站点或应用程序级别声明。< authentication> 元素必需与<authorization> 节配合使用。

      示例:

      以下示例 ...

    转载于:https://www.cnblogs.com/xiaoQcn/archive/2009/12/20/1652882.html

    展开全文
  • 配置webconfig

    2018-05-27 23:29:00
    记录下webconfig的配置(复制很久的笔记): 1、 配置Session在url传递 在web.config中的 <system.web> 节点下添加,手动修改session的相关设置 <sessionState timeout="5" cookieless="true"> </...

    记录下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">

    转载于:https://www.cnblogs.com/entclark/p/9098101.html

    展开全文
  • WEBconfig RSA

    2019-09-29 16:25:49
    建立虚拟目录名称为EncryptWebConfig并添加Web.config文件如下: XML-Code: < configProtectedData >   < providers >   < add   keyContainerName = "LiuwuNetKeys"   useMachineContainer = "true...

    上一篇文章介绍了用 DataProtectionConfigurationProvider加密web.config文件的方法

    不过他有一个缺陷,加密的文件只有在本机才能解密,如果有多台服务器的话,则需要每台机单独加密,因此不利于部署。

    而利用RSAProtectedConfigurationProvider来加密就恰好可以解决这个问题。

    本文就介绍一下如何利用RSAProtectedConfigurationProvider来部署多台服务器。

    一 创建RSA 密钥

    运行命令:aspnet_regiis -pc "LiuwuNetKeys" -exp

    二 建立虚拟目录名称为EncryptWebConfig并添加Web.config文件如下:

    <configProtectedData>
      <providers>
        <add
            keyContainerName="LiuwuNetKeys"
            useMachineContainer="true"
            description="Liuwu.net Keys"
            name="LiuwuNetProvider"
            type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </configProtectedData>
     
    <connectionStrings>
      <add name="Conn" connectionString="Data Source=liuwu;User ID=liuwu;Password=liuwu;" />
    </connectionStrings>

    主要是在config文件中加入configProtectedData配置节。

    三 加密

    运行命令aspnet_regiis -pe "connectionStrings" -app "/EncryptWebConfig" -prov "LiuwuNetProvider"

    其中/EncryptWebConfig是虚拟目录的名称,LiuwuNetProvider 是上一步ConfigProtectedData配置节中配置的名称

    加密后的连接字符串如下:

    <connectionStrings configProtectionProvider="LiuwuNetProvider">
     <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
        xmlns="http://www.w3.org/2001/04/xmlenc#">
        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
          <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
            <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
            <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
              <KeyName>Rsa Key</KeyName>
            </KeyInfo>
            <CipherData>
              <CipherValue>RoOicEmyEeyGt216zRdwRXVaBWB2rRn+znQN59Y9/U55dEWtYdY3/HnVzIzS/BTeJ6JMOkXWLXFSjSNrA8LY22ya65r8FBI8byOCEFJ5nd1sIpnCA4Fhm72JEKhojGXo1kMURCfSQd8BdHCAJskMrsG3/bGJconC8TyyfEXTgcM=</CipherValue>
            </CipherData>
          </EncryptedKey>
        </KeyInfo>
        <CipherData>
          <CipherValue>JTALo/rdj0zMzN2i0oFwP3wD6jQXijxpUjOc/5bBpOvP+dPQ2+rRDQXN5h+kzUWkB1vO4WSG9dDXif8Keud2QAJPU4eh4oc6pZ35sR6Ks/WzMqhnqPJi4GZ3yjodD+tuhgY2Cu94Q60R+IY4/DZ2iqrj4rNi51UCaFa7iF/CpOp6dMDkEu8ema0Asvfomj6R</CipherValue>
        </CipherData>
      </EncryptedData>
    </connectionStrings>

    四 分配权限

    此时运行程序,可能会出现以下错误:

    分析器错误消息: 未能使用提供程序“LiuwuNetProvider”进行解密。提供程序返回错误消息为: 打不开 RSA 密钥容器。

    这是因为web服务器的运行帐号没有足够的权限来访问RSA容器,因此我们需要给他分配权限,在win2003的系统中,web服务器的运行帐号是NT Authority\Network Service

    运行命令:aspnet_regiis -pa "LiuwuNetKeys" "NT Authority\Network Service"

    LiuwuNetKeys就是第一步创建的密钥名称

    到现在程序可以正常运行了。

    五 导出密钥

    运行命令:aspnet_regiis -px "LiuwuNetKeys" "d:\LiuwuNetKeys.xml" -pri 

    LiuwuNetKeys 是第一步创建的密钥名称,这里将它导出为D盘的LiuwuNetKeys.xml文件

    自此本机的操作已经完成,如果要解密,可以运行 aspnet_regiis -pd "connectionStrings" -app "/EncryptWebConfig" 

    六 部署到其他机器

    在其他机器只要将加密后的Web.config文件拷贝过来,然后运行 aspnet_regiis -pi "LiuwuNetKeys" "d:\LiuwuNetKeys.xml" 就可以了,同样要记得分配权限。

    注:这里只用了虚拟目录,其实也可以使用物理路径,具体参数可以在命令行运行 aspnet_regiis 查看具体的帮助。

    转载于:https://www.cnblogs.com/yxbsmx/articles/1671813.html

    展开全文
  • 自定义WebConfig

    2014-05-06 16:03:33
    Webconfig中需要的节点配置信息定义好之后,就需要建立对应的Class来读取这些信息,也就是上面提到的 XXX.App.ServicePlanEmailPromotion.DataSourceSettings. 创建的Class内容如下: public sealed class ...
  • webconfig配置

    2012-03-11 08:40:00
    asp.NET中服务器端session状态的存储准备工作: 为了您能更好的体验到实验现象,您可以建立一个叫做SessionState.aspx的页面,然后把以下这些代码添加到< body>< /body>中。< scriptrunat="server">Sub Session_Add...
  • webconfig 加密

    2011-11-25 15:21:53
     二 建立虚拟目录名称为EncryptWebConfig并添加Web.config文件如下: 以下为引用的内容: <configProtectedData> <providers> keyContainerName="LiuwuNetKeys" useMachineContainer="true" ...
  • webconfig详解

    2011-09-17 17:45:27
    <configuration> 所有.NET配置文件所必须的...2、建立网页test1.aspx,加个标签。 宋体"> <asp:Label id="lblSiteName" runat="server" Font-Bold="True" Font-Size="Large"></asp:Label> ...
  • WebConfig 详解

    2009-08-25 08:42:00
    访问Web.config文件 你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。例如: protected static string Isdebug = Configuration...
  • webconfig设置

    2008-10-07 13:55:00
     你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。  vb.net  Dim sconstr As String = ConfigurationSettings.AppSettings(...
  • webConfig培植

    2008-06-11 23:25:00
     你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例:获取上面例子中建立的连接字符串。 Dim sconstr As String = ConfigurationSettings.AppSettings("SconStr") Dim ...
  • webconfig 详解

    2008-06-03 10:11:00
    ASP.NET中服务器端Session状态的存储 准备工作: 为了您能更好的体验到实验现象,您可以建立一个叫做SessionState.aspx的页面,然后把以下这些代码添加到< body>< /body>中。< scriptrunat="server">Sub Session_...
  • WebConfig Authorization 节点

    千次阅读 2009-05-08 11:05:00
    WebConfig Authorization 节点 授权的目的是确定是否应该授予某个标识对给定资源请求的访问权限类型。有两种基本方式来授予对给定资源的访问权限: 文件授权 文件授权由 FileAuthorizationModule 执行,它在使用 ...
  • webconfig 初认识

    2015-01-28 08:53:00
    例子:我们的asp.net应用程序中建立一个IPData目录,在IPData目录中创建一个IPData.txt文件,在Web.config中添加以下配置    *.txt" verb="*" type="System.Web.HttpForbiddenHandler"/>---代码的作用是禁止访问...
  • 昨天需要新建一个虚拟目录放在以前的一个站点下,新建了应用池,配好了环境置顶路径,虚拟目录页建立成功 ,但是程序一直是报错。这个程序我在测试服务器上是测过的,新建了一个站点是可以正常访问的,排除了程序...
  • webconfig配置信息转发

    2016-05-22 19:41:00
    这篇文章主要介绍了.net中webconfig 详解,需要的朋友可以参考下 .net 提供的是针对当前机器的配置。---名称:machine.config 运行机制:asp.net网站IIS启动的时候会加载配置文件中的配置信息,然后缓存...
  • WebConfig配置详解

    2010-03-12 16:45:00
      所有 .NET ...、建立网页 test1.aspx ,加 2 个标签。 宋体 "> <asp:Label id="lblSiteName" runat="server" Font-Bold="True" Font-Size="Large"></asp:Label> ...
  • 若要建立访问特定目录的条件,则必须将一个包含 部分的配置文件放置在该目录中。为该目录设置的条件也会应用到其子目录,除非子目录中的配置文件重写这些条件。此部分的常规语法如下所示。 <[ element ] [ ...
  • webconfig的配置方法

    2012-01-15 20:21:20
    webconfig的配置方法 2010年03月13日  web.config配置文件中所有的配置设置都应该位于    和    之间. web.config的设置对于整个应用程序起作用,同时程序中随时可以调用web.config中的节点设置及关键...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,374
精华内容 949
关键字:

webconfig建立