以下内容转载自C#与.net面试宝典
1.ASP.NET的页对象
1.1 ASP.NET的Request对象有哪些?
1、主要属性
ApplicationPath | 获取服务器上asp.net应用程序的虚拟应用程序根路径 |
Browser | 获取有关正在请求的客户端的浏览器功能的信息,该属性值为:HttpBrowserCapabilities对 象 |
ContentEncoding | 获取或设置实体主体的字符集。该属性值为表示客户端的字符集Encoding对象 |
ContentLength | 指定客户端发送的内容长度,以字节为单位 |
ContentType | 获取或设置传入请求的MIME内容类型。 |
Cookies | 获取客户端发送的Cookie集合,该属性值为表示客户端的Cookie变量的 HttpCookieCollection对象 |
CurrentExecutionFilePath | 获取当前请求的虚拟路径 |
FilePath | 获取当前请求的虚拟路径 |
Files | 获取客户端上载的文件集合。该属性值为HttpFileCollection对象,表示客户端上载的文件集合 |
Form | 获取窗体变量集合 |
HttpMethod | 获取客户端使用的HTTP数据传输方法(如:get、post或head) |
Item | 获取Cookies、Form、QueryString或ServerVariables集合中指定的对象 |
Params | 获取Cookies、Form、QueryString或ServerVariables项的组合集合 |
Path | 获取当前请求的虚拟路径 |
PathInfo | 获取具有URL扩展名的资源的附加路径信息 |
PhysicalApplicationPath | 获取当前正在执行的服务器应用程序的根目录的物理文件系统路径 |
PhysicalPath | 获取与请求的URL相对应的物理文件路径 |
QueryString | 获取HTTP查询字符串变量集合。该属性值为:NameValueCollection对象,它包含由客户端发送的查询字符串变量集合 |
RequestType | 获取或设置客户端使用HTTP数据传输的方式(get或post) |
ServerVariables | 获取Web服务器变量的集合 |
TotalBytes | 获取当前输入流的字节数 |
Url | 获取有关当前请求URL的信息 |
UserHostAddress | 获取远程客户端的IP主机地址 |
|
二、Request对象的应用
1.读取窗体变量四种方式:
(1).使用Request.Form属性读取窗体变量
(2).使用Request.QueryString属性读取窗体变量
(3).使用Request.Params属性读取窗体变量
(4).通过服务器控件的属性直接读取窗体变量
解答:Request对象的作用是与客户端交互,收集客户端的Form,Cookie,或者服务端的信息。
1.2 ASP.NET的Response对象有哪些?
解答:Response用于回应浏览器,告诉浏览器回应内容的报头、服务器的状态信息和输出指定的内容。Response常用的方法是Write方法,用于输出响应的文本内容。
1.3 ASP.NET的Server对象有哪些?
Server对象的常用属性
属性 | |
MarhineName | 获取服务器的计算机名称 |
ScriptTimeout | 获取和设置请求超时值 |
Server对象常用方法
方法 | |
Execute | 在当前请求的上下文中执行指定资源的处理程序,然后将控制返回给处理程序 |
HtmlDecode | 对已被编码以消除无效的HTML字符的字符串进行解码 |
HtmlEncode | 对要在浏览器中显示的字符进行编码 |
MapPath | 返回与web服务器上的指定虚拟路径相对应的物理文件路径 |
UrlDecode | 对字符串进行解码,改字符串为了进行HTTP传输而编码并在URL中发送到服务器 |
UrlEncode | 编码字符串,以便通过URL从Web服务器到客户端经行可靠的HTTP传输 |
transfer | 终止当前页的执行,并为当前请求开始执行新页 |
1.使用Server.Execute方法和Server.Transfer方法重定向页面
2.使用Server.MapPath方法获取服务器的物理路径
3.对字符串经行编码和解码
解答:Server对象也是asp.net内置对象之一。它提供获取服务器名称,访问路径,html编码等方法。
2.ASP.NET的页语法
2.1 什么是Web窗体,什么是Web用户控件?
分析:Web窗体由aspx和cs文件组成。Web用户控件是一个ascx文件
解答:Web窗体可以认为是一个大的容器,这个容器装载了所有要实现功能的所有html控件server端控件。Web用户控件也是一种容器,功能和Web窗体类似,Web用户控件可以被重复使用,但是Web用户控件不能被单独使用,Web用户控件必须被包含在Web窗体中使用。
2.2 什么是ViewState?
解答:ViewState是ASP.NET一个重要特性,它用于把生成的页面要用的状态值保存在一个隐藏域中。ViewState也是一个非常有用的特性,它能持久化用户状态,而不用Cookie或者服务器的内存。
2.3 ViewState的优缺点有哪些?
解答:ViewState的优点有使用简答,存储的数据不受时间限制。缺点有存储大量数据时性能低下,不能跨页面传值。
2.4 Session,ViewState,Cookie之间有什么区别?
转载自: ViewState、Cookie、Session、Application的作用与区别
解答:session保存在服务器端的,session本身有sessionid,用来区别唯一,数据量相对较大,且占有服务器资源,所有考虑效率的时候尽量少用,而考虑安全尽量多用。
viewstate是用来存储页面状态的,存储级别是页面级的,也就是说它在当前页面有效,出了这个页面就无效了,而且它的存储是经过哈希加密过的,我们的每一服务器控件都有viewstate属性,它默认为true。
cookie保存在客户端,一般保存一些非常敏感的数据,数据量相对较小,如果考虑效率,建议尽量多用,考虑安全,尽量少用。
2.5 请简述ASP.NET中常见的页面跳转方法
解答:在ASP.NET开发中,常用的跳转技术有Response.Redirect,Server.Transfer,Server.Execute,超链接,超链接控件,Javascript脚本这六种跳转方法。
3.Forms身份验证
3.1 请介绍ASP.Net窗体验证的原理及配置过程
在ASP.NET中,整个身份认证的过程其实可分为二个阶段:认证与授权。
1. 认证阶段:识别当前请求的用户是不是一个可识别(的已登录)用户。
2. 授权阶段:是否允许当前请求访问指定的资源。
这二个阶段在ASP.NET管线中用AuthenticateRequest和AuthorizeRequest事件来表示。
在认证阶段,ASP.NET会检查当前请求,根据web.config设置的认证方式,尝试构造HttpContext.User对象供我们在后续的处理中使用。 在授权阶段,会检查当前请求所访问的资源是否允许访问,因为有些受保护的页面资源可能要求特定的用户或者用户组才能访问。 所以,即使是一个已登录用户,也有可能会不能访问某些页面。 当发现用户不能访问某个页面资源时,ASP.NET会将请求重定向到登录页面。
配置如下:
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true">
</compilation>
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="~/login.aspx" protection="All"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
以上内容转载自:ASP.NET中使用Forms验证身份验证 细说ASP.NET Forms身份认证
3.2 请介绍ASP.NET窗体身份验证方面的控制流程
当某一个用户使用用户名成功登陆网站时,FormsAuthentication(窗体验证机制)将会创建一个身份验证票,通过这个身份验证票就可以在网站上全程跟踪用户。这样就实现了用户验证的功能。
3.3 ASP.NET有几种存储会话状态的方式?
解答:InProc,StateServer,SqlServer三种状态,最常用的是InProc也是ASP.NET默认的状态。
3.4 请介绍ASP.NET会话状态InProc状态的特点
InProc特点是性能最高,速度最快,但不能跨多台服务器存储共享。
3.5 请介绍ASP.NET会话状态StateServer的特点
例如,如果部署两台服务器A服务器的ip为192.168.0.1,B服务器的ip为192.168.0.2,希望访问A服务器时,生成的session存储到B服务的进程中去,需要在程序中做如下配置stateConnectstring=192.168.0.2:42424。同时需要在B服务器上安装.net Framework,并且启动ASP.NET状态服务。
配置方法参考:设置Asp.net网站的StateServer会话模式
StateServer适用于需要跨服务器维护用户会话状态的情况,由于数据存储在服务器上,服务器出现故障则数据丢失。
3.6 请介绍ASP.NET会话状态SqlServer的特点
配置方法参考:asp.net SessionState的sqlserver模式的配置及使用
SqlServer可跨服务器维护用户状态,且信息不回丢失,但工作负载较大。