1、请描述一下.net的页面访问基本过程,以及和普通Web访问过程的区别(请
描述从web页面请求到页面返回的主要事件和过程);  2、怎样理解web应用程序的“无状态编程”?  3、请你列举你最熟悉的WebControl以及他们的主要功能;  4、请你列举你最熟悉的.net名称空间以及他们的主要内容。  5、您经常访问哪些有关.net的网站?  6、 在.net中,请描述有哪些办法可以防止页面刷新局部内容闪烁问题(例如
某个聊天页面,每隔几秒就自动刷新,怎样防止闪烁)?  7、请描述一下在.net中Forms认证模式下,怎样用代码(用户名单存在数据库
中,而不是WebConfig中)实现一个基于角色的授权?  8、在Vs.net中,怎样配置数据库连接,可以使开发环境到应用环境迁移数据库
时不修改程序?   9、假设有一个数据库字段name,需要在网页中只显示该字段的姓,而隐藏名
字,类似“张**”形式,请写出数据绑定的自定义表达式。   10、请简单描述一下制作一个用户控件(UserControl)的过程。  11、您有没有制作过自定义的webcontrol(注意不是用户控件)?如果有,请
描述一下自定义控件制作基本过程,主要重载哪些方法?。  12、请描述构成ADO.net的主要对象以及他们的作用。

解决方案 »

  1.   

    惨了,能答的题目不过一半,没有winform的经验啊
      

  2.   

    8.把数据库连接写在Web.config里面,然后用程序去读
      

  3.   

    1——
    .NET同普通的WEB运行机制基本一样,其重大的改进或者功能的提升是引入了POSTBACK技术,能自动根据上次的VIEWSTATE和本次POSTBACK的数据进行比较,触发相应的事件,同时POSTBACK技术减少了我们在ASP时代需要手动把POST数据通过REQUEST获取的工作量。2——
    WEB的无状态编程源于HTTP协议本身的无状态。因为每次HTTP请求的前后,我们都没有办法确定客户端(浏览器)的具体状态。3——
    这个就慢慢用了。4——
    同3。5——
    CSDN、博客园6——
    通过XML对象或隐藏的IFRAME/FRAME对象来获取页面数据,然后再动态的把新数据写到显示的内容中7——
    关注。
      

  4.   

    8——
    把数据库连接信息写到CONFIG文件中。9——
    #DataBinder.Eval(Container.DataItem,"name").ToString().SubString(0,1)10——
    创建一个USERCONTROL,然后把需要的控件放进去,写需要的代码。11——
    做过。要重载哪些方法不确定,视控件的功能和复杂度的不同而不同。一般的有VIEWSTATE操作方法、CONTROL创建方法、RENDER方法等。12——
    COMMAND
    CONNECTION
    DATAADAPTER
    COMMANDBUILDER
    太多了。
      

  5.   

    6、 在.net中,请描述有哪些办法可以防止页面刷新局部内容闪烁问题(例如
    某个聊天页面,每隔几秒就自动刷新,怎样防止闪烁)?
    使用xmlhttp
      

  6.   

    XmlHttp.htm
    <html>
     <head>
      <title>Lion互动网络==》在客户端用XmlHttp取得服务器端的DataSet数据</title>
      <meta http-equiv="Pragma" content="no-cache">
     </head>
     <body>
      <INPUT id="Button1" onclick="GetDataSet()" type="button" value="取得XmlHttp.Aspx中的DataSet以Xml形式显示"
       name="Button1">
      <div id="abc"><FONT face="宋体"></FONT></div>
    <script language="jscript">
    function CreateXMLHTTP()
    {
     try{return new ActiveXObject('MSXML2.XMLHTTP');}catch(x){}
     try{return new ActiveXObject('Microsoft.XMLHTTP');}catch(x){}
     throw(new Error(-1,'不能创建XMLHTTP'));
    }
    function GetDataSet()

     var xmlhttp = CreateXMLHTTP();
     var url = document.location.href;
     url = url.substring(0,url.lastIndexOf("\/")+1)+"XMLHTTP.aspx";
     xmlhttp.open("GET",url,false)
     xmlhttp.setRequestHeader("Content-Type","text/xml")
     xmlhttp.send()
     abc.innerText = (xmlhttp.responseXML.xml);
     
    }
    </script>
     </body>
    </html> XMLHTTP.aspx
    <%@ Page language="c#" Codebehind="XMLHTTP.aspx.cs" Src="XMLHTTP.aspx.cs" AutoEventWireup="false" Inherits="Exam.WebForm1" %>XMLHTTP.aspx.cs
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace Exam
    {
     /// <summary>
     /// WebForm1 的摘要说明。
     /// </summary>
     public class WebForm1 : System.Web.UI.Page
     {
      private void Page_Load(object sender, System.EventArgs e)
      {   
       // 在此处放置用户代码以初始化页面
       
       System.Data.DataTable DT = new System.Data.DataTable("temptable");
       DT.Columns.Add("ID",typeof(int));
       DT.Columns.Add("Name",typeof(string));
       DT.Columns.Add("AddTime",typeof(DateTime));
       DT.Columns[0].AutoIncrement = true;
       DT.Columns[0].AutoIncrementSeed = 1;
       DT.Columns[0].AutoIncrementStep = 1;
       for(int i=0;i<20;i++)
       {
        System.Data.DataRow dr= DT.NewRow();
        dr[1] = "欢迎光临Lion互动网络,第 "+ (i+1) +" 行";
        dr[2] = System.DateTime.Now.AddDays(i);
        DT.Rows.Add(dr);
       }
       System.Data.DataSet ds = new System.Data.DataSet("Root");
       ds.Tables.Add(DT);
       Response.Buffer=true;
       Response.CacheControl="no-cache";
       Response.ContentType = "text/xml";
       Response.Clear();
       Response.Write("<?xml version='1.0' encoding='gb2312'?>");
       Response.Write(ds.GetXml());
       Response.End();
       DT.Clear();
       DT.Dispose();
       ds.Clear();
       ds.Dispose();
       
      }  #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
      
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
       this.Load += new System.EventHandler(this.Page_Load);  }
      #endregion
     }
    }
      

  7.   

    to:andrawsky(追忆似水年华) 
    你好,你的xmlhttp怎么点击按钮,页面没有任何显示呢?
      

  8.   

    1..NET页面访问过程:当请示时,页面返回到服务器IIS,IIS再判断其扩展名是否是.ASPX,如果是,则调用ASPNET_ISAPI.DLL去解释它,并返回请求给IIS,IIS再返回.简单就是这样,而普通页面访问则一样的道理,只是调用的是ISAPI.DLL而已
    2.HTTP是个无法保存状态的协议,具体不知道怎么说,呵呵 
    3.datagrid ,textbox.button.datalist..............
    4.system.web.system.io...................
    5.www.gotdotnet.com,www.codeproject.com.bbs.mvpcn.net..............
    其它的不说了,那么多,累死人了
      

  9.   

    1.IIS响应请求,aspnet_isapi.dll通过命名管道与aspnet_wp.exe通讯,生成HttpRequest实例,在穿过实现IHttpModule的类,穿过实现IHttpHandle的类,实现IHttpHandle的类在ProcessRequest()方法中对HttpRequest实例进行分析,初始化页面,生成控件树,初始化控件,触发事件,保存viewstate,预呈现,呈现。2.服务器返回客户端的请求后就与客户端没了连接。3.4.System.Data DataSet     类在这里
      System.Data.SqlClient   sql数据操作类,SqlConnection SqlCommand SqlDataAdapter SqlDataReader在这里
      System.Text             字符处理类
      System.IO               文件处理 ,流处理
      System.Collection       集合类数据结构都在这里
      System...WebControl     web控件全在这里
      System..                安全类,忘了名字5. www.codeproject.com
       www.csdn.net
       msdn6.javascript,异步xmlhttp, 或者javascript调web services,对返回的xml数据进行格式化处理7.写cookies时写入数据库的角色信息8.写在web.config中,或加密保存注册表9.10.添加一个用户控件,像做aspx页面一样的放控件,写代码11.Rend()方法管理最后的html输出,PreRend()中注册javascript,CreateChildControl()方法创建子控件结构,DataBind()方法调用CreateChildControl()12.DataSet SqlConnection SqlCommand SqlDataAdapter SqlDataReader
      

  10.   

    12.
    dateset   断开的数据集,在断开连接的情况下,操作数据
    data adapter   适配器,对dataset datatable 操作
    datatable  类似dataset,但是是单表,dataset可以同时存储多表
    command    命令对象,可以执行增删改的操作
    我主要就用这些
      

  11.   

    1 详细的page类事件顺序是这样的:
       获得客户端的post请求-〉page类的继承类被构造-〉page类的ProcessRequest方法被调用->init事件被执行->page类的虚函数CreateChildControls被调用->服务器端控件的状态(来自post变量和ViewState)被存储->load事件被执行->我们自定义的服务器端控件的事件被执行->PreRender事件被执行->page类的虚函数Render方法被调用->page类的虚函数RenderChildren方法被调用->Http响应发往客户端->unload事件被执行->page类的继承类被解构。2,客户端,服务端分离,每次postback,重新生成页面,无法保存当前状态值.3,WebControl多的是,查msdn就是了,还要说主要功能???4,.net名称空间也要问,晕.5,csdn6,"防止刷新",如果除非<meta http-equiv="refresh" content="5"> ;setTimeout("document.location='www.usa.com'",3000) 否则它怎么会自己刷新呢
    7,
    Forms身份验证基本原理: 一 身份验证 要采用Forms身份验证,先要在应用程序根目录中的Web.config中做相应的设置: <authentication mode="forms">  
      <forms name=".ASPXAUTH " loginUrl="/login.aspx" timeout="30" path= "/"> 
      </forms>  
    </authentication> 其中<authentication mode= "forms"> 表示本应用程序采用Forms验证方式。 
    1. <forms>标签中的name表示指定要用于身份验证的 HTTP Cookie。默认情况下,name 的值是 .ASPXAUTH。采用此种方式验证用户后,以此用户的信息建立一个FormsAuthenticationTicket类型的身份验证票,再加密序列化为一个字符串,最后将这个字符串写到客户端的name指定名字的Cookie中.一旦这个Cookie写到客户端后,此用户再次访问这个web应用时会将连同Cookie一起发送到服务端,服务端将会知道此用户是已经验证过的.  再看一下身份验证票都包含哪些信息呢,我们看一下FormsAuthenticationTicket类: 
    CookiePath: 返回发出 Cookie 的路径。注意,窗体的路径设置为 /。由于窗体区分大小写,这是为了防止站点中的 URL 的大小写不一致而采取的一种保护措施。这在刷新 Cookie 时使用 
    Expiration: 获取 Cookie 过期的日期/时间。 
    IsPersistent: 如果已发出持久的 Cookie,则返回 true。否则,身份验证 Cookie 将限制在浏览器生命周期范围内。 
    IssueDate: 获取最初发出 Cookie 的日期/时间。 
    Name: 获取与身份验证 Cookie 关联的用户名。 
    UserData :获取存储在 Cookie 中的应用程序定义字符串。 
    Version: 返回字节版本号供将来使用。 
    2. <forms>标签中的loginUrl指定如果没有找到任何有效的身份验证 Cookie,为登录将请求重定向到的 URL。默认值为 default.aspx。loginUrl指定的页面就是用来验证用户身份的,一般此页面提供用户输入用户名和密码,用户提交后由程序来根据自己的需要来验证用户的合法性(大多情况是将用户输入信息同数据库中的用户表进行比较),如果验证用户有效,则生成同此用户对应的身份验证票,写到客户端的Cookie,最后将浏览器重定向到用户初试请求的页面.一般是用FormsAuthentication.RedirectFromLoginPage 方法来完成生成身份验证票,写回客户端,浏览器重定向等一系列的动作. public static void RedirectFromLoginPage( string userName, bool createPersistentCookie, string strCookiePath ); 其中: 
    userName: 就是此用户的标示,用来标志此用户的唯一标示,不一定要映射到用户账户名称. 
    createPersistentCookie: 标示是否发出持久的 Cookie。 
    若不是持久Cookie,Cookie的有效期Expiration属性有当前时间加上web.config中timeout的时间,每次请求页面时,在验证身份过程中,会判断是否过了有效期的一半,要是的话更新一次cookie的有效期;若是持久cookie,Expiration属性无意义,这时身份验证票的有效期有cookie的Expires决定,RedirectFromLoginPage方法给Expires属性设定的是50年有效期。 
    strCookiePath: 标示将生成的Cookie的写到客户端的路径,身份验证票中保存这个路径是在刷新身份验证票Cookie时使用(这也是生成Cookie的Path),若没有strCookiePath 参数,则使用web.config中 path属性的设置。 这里可以看到,此方法参数只有三个,而身份验证票的属性有七个,不足的四个参数是这么来的: 
    IssueDate: Cookie发出时间由当前时间得出, 
    Expiration:过期时间由当前时间和下面要说的<forms>标签中timeout参数算出。此参数对非持久性cookie有意义。 
    UserData: 这个属性可以用应用程序写入一些用户定义的数据,此方法没有用到这个属性,只是简单的将此属性置为空字符串,请注意此属性,在后面我们将要使用到这个属性。 
    Version: 版本号由系统自动提供. RedirectFromLoginPage方法生成生成身份验证票后,会调用FormsAuthentication.Encrypt 方法,将身份验证票加密为字符串,这个字符串将会是以.ASPXAUTH为名字的一个Cookie的值。这个Cookie的其它属性的生成:Domain,Path属性为确省值,Expires视createPersistentCookie参数而定,若是持久cookie,Expires设为50年以后过期;若是非持久cookie,Expires属性不设置。 
    生成身份验证Cookie后,将此Cookie加入到Response.Cookies中,等待发送到客户端。 
    最后RedirectFromLoginPage方法调用FormsAuthentication.GetRedirectUrl 方法获取到用户原先请求的页面,重定向到这个页面。 3. <forms>标签中的timeout和path,是提供了身份验证票写入到Cookie过期时间和默认路径。 以上就是基于Forms身份验证的过程,它完成了对用户身份的确认。下面介绍基于Forms身份验证的访问授权。 
      

  12.   

    Forms身份验证基于角色的授权 一 身份验证 在web.config的<authentication>的设置还是一样: <authentication mode="forms">  
      <forms name=".ASPXAUTH " loginUrl="/login.aspx" timeout="30" path= "/"> 
      </forms>  
    </authentication> /login.aspx验证用户合法性页面中,在验证了用户的合法性后,还要有个取得此用户属于哪些role的过程,这个看各个应用的本身如何设计的了,一般是在数据库中会有个use_role表,可以从数据库中获得此用户属于哪些role,在此不深究如何去获取用户对应的role,最后肯定能够获得的此用户对应的所有的role用逗号分割的一个字符串。 
    在上面的非基于角色的方法中,我们用了FormsAuthentication.RedirectFromLoginPage 方法来完成生成身份验证票,写回客户端,浏览器重定向等一系列的动作。这个方法会用一些确省的设置来完成一系列的动作,在基于角色的验证中我们不能用这一个方法来实现,要分步的做,以便将一些定制的设置加进来: 1. 首先要根据用户标示,和用户属于的角色的字符串来创建身份验证票 
    public FormsAuthenticationTicket( 
    int version, //设为1 
    string name, //用户标示 
    DateTime issueDate, //Cookie 的发出时间, 设置为 DateTime.Now  
    DateTime expiration, //过期时间 
    bool isPersistent, //是否持久性(根据需要设置,若是设置为持久性,在发出 
    cookie时,cookie的Expires设置一定要设置) 
    string userData, //这里用上面准备好的用逗号分割的role字符串 
    string cookiePath // 设为"/",这要同发出cookie的路径一致,因为刷新cookie 
    要用这个路径 
    ); FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket (1,"kent",DateTime.Now, DateTime.Now.AddMinutes(30), false,UserRoles,"/") ; 2. 生成身份验证票的Cookie 
    2.1 将身份验证票加密序列化成一个字符串 
    string HashTicket = FormsAuthentication.Encrypt (Ticket) ; 
    2.2 生成cookie 
    HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket) ; 
    FormsAuthentication.FormsCookieName 是用来获取web.config中设置的身份验证cookie的名字,缺省为" .ASPXAUTH". 
    若身份验证票中的isPersistent属性设置为持久类,则这个cookie的Expires属性一定要设置,这样这个cookie才会被做为持久cookie保存到客户端的cookie文件中. 
    3. 将身份验证票Cookie输出到客户端 
    通过Response.Cookies.Add(UserCookie) 将身份验证票Cookie附加到输出的cookie集合中,发送到客户端. 
    4. 重定向到用户申请的初试页面. 验证部分代码(这部分代码是在login.aspx页面上点击了登录按钮事件处理代码): private void Buttonlogin_Click(object sender, System.EventArgs e) 

       string user = TextBoxUser.Text; //读取用户名 
       string password = TextBoxPassword.Text; //读取密码 
       if(Confirm(user,password) == true) //confirm方法用来验证用户合法性的 
      { 
         string userRoles = UserToRole(user); //调用UserToRole方法来获取role字符串 
         FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket (1,user,DateTime.Now,     DateTime.Now.AddMinutes(30), false,userRoles,"/") ; //建立身份验证票对象 
         string HashTicket = FormsAuthentication.Encrypt (Ticket) ; //加密序列化验证票为字符串 
         HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket) ;  
    //生成Cookie 
         Context.Response.Cookies.Add (UserCookie) ; //输出Cookie 
         Context.Response.Redirect (Context.Request["ReturnUrl"]) ; // 重定向到用户申请的初始页面 
       } 
      else 
      { 
        // 用户身份未被确认时的代码 
      } 

    //此方法用来验证用户合法性的 
    private bool Confirm(string user,string password) 

      //相应的代码 

    //此方法用来获得的用户对应的所有的role用逗号分割的一个字符串 
    private string UserToRole(string user) 

      //相应的代码 
    } 8,把配置写在web.config中9,name.SubString(0,1)10 制作一个用户控件(UserControl)的过程,和写ASPX页面一样,不过就是ASMX而已11 自定义控件,就是继承某个控件,修改重载它的方法符合自己的要求而已12  connect,command,dataset,datatable,ado.net对象多了查msdn去吧