.NET Compilation模块
在为一个请求提供服务之前,ASP.NET首先需要将代码编译为合适的程序集。这些程序集文件以.dll作为扩展名。利用IIS 7.0中的ASP.NET模块,可以控制服务器如何编译ASP.NET代码。
.NET Globalization模块
全球化是指开发人员设置应用程序时,需要让应用程序能够在全球化多种语言文化中使用,并且能够在多个地区运行。通过完成本地化过程,我们可以对全球化应用程序进行定制,确定应用程序运行的具体语言和具体地点。利用全球化过程,我们可以令一个代码库适用于多个地区,同时还能够提供特定地区的语言和文化背景信息。
.NET Trust Levels 模块
ASP.NET代码访问安全(code access security,CAS)策略是通过设置应用程序的信任级别来实现的。CAS可以确定授予服务器中某个应用程序的权限。如果需要部署的代码获得了访问服务器的提升权限,那么如何设置CAS就成了一项非常重要的工作。如果需要部署的代码修改了服务器的文件系统,那么为了防止错误的访问发生,必须严格控制CAS。
CAS具有两种信任类型:完全信任(full trust)和部分信任(partial trust)如果一个应用程序具有完全信任权限,那么这个应用程序就可以访问服务器中的所要资源,完成所有操作,在这种情况下,这个应用程序只能由操作系统的安全设置来限制其权限。
在默认设置中,我们可以使用5种不同的信任级别:完全(Full)、高级(High)、中级(Medium)、低级(Low)、最小(Minimal)。
Application Settings模块
利用Application Settings模块,可以在web.config文件中保存应用程序的配置数据,数据的保存格式为键/值对。这些设置所确定的值在整个应用程序范围内有效,因此在Web应用程序的任何位置都是有效的。修改配置数据是一项非常简单的任务,因为这些配置数据都集中保存在配置文件中。
必须牢记:对 .NET 设置进行任何修改都会导致一次 appDomain 回收,因此会影响到整个服务器。
连接字符串
连接字符串可以用来在应用程序和数据库之间建立通信连接。连接字符串中不但包括服务器、数据库名、用户,还包括应用程序与数据库进行通信时使用的密码。
计算机密钥
ASP.NET使用计算机密钥来保护Forms身份验证的cookie数据和页面视图的状态数据。计算机密钥本身是一种散列值,可以用于对cookie数据和页面视图状态数据进行加密。计算机密钥可以用于在进程之外运行会话。虽然我们可以在服务器级设置计算机密钥,甚至可以在文件级设置计算机密钥,但是在默认情况下,计算机密钥均锁定在服务器级和网站级。如果一个网站可以运行在多台Web服务器中,那么这些密钥便可以在不同的服务器之间共享。
ASP.NET使用了两类计算机密钥:验证密钥和解密密钥。验证密钥可以用于创建消息验证代码(Message Authentication Code,MAC),利用MAC,我们可以验证数据的完整性。验证密钥可以附加到Forms身份验证cookie之后,也可以附加到视图状态数据之后。解密密钥可以用于对Forms身份验证票证和视图状态数据进行加密和解密。
如果要在多台服务器上使用验证密钥,那么需要创建一个单独的验证密钥,然后在多台服务器之间共享这个验证密钥。如果要在多台服务器上使用解密密钥,那么需要创建一个单独的解密密钥,然后在多台服务器之间共享这个解密密钥。
页面及控件
ASP.NET能够识别和处理页面运行过程中使用的基本元素。ASP.NET还可以支持使用定制的控件,这些定制的控件是可重用的,并且是在服务器方进行处理的。因此,服务器代码可以用于配置ASP.NET的Web页面属性。
Providers模块
使用.NET Framework创建的ASP.NET和应用程序可以使用数据库保存信息。为了将应用程序映射到数据库架构,需要使用一个名为Provider的软件模块。对于应用程序和数据库来说,Provider软件模块等价于硬件抽象层。通过使用Provider模块,IIS 7.0可以安装定制的数据库访问模块,也支持修改标准的ASP.NET数据库访问模块。可以使用3种不同的数据库访问角色:.NET Roles、.NET Users、.NET Profile。
.NET Roles角色的数据库提供程序可以创建授权存储、SQL角色以及Windows令牌提供程序类型。.NET Users数据库提供程序可以用于创建Active Directory成员类型,还可以用于创建SQL成员资格提供程序类型。.NET Profile 可以用于创建SQL配置文件提供程序。
会话状态
IIS 7.0使用会话状态来跟踪用户访问网站过程中所浏览的页面,通过为每个用户创建一个会话ID,IIS可以区分相关用户。HTTP是一种无状态协议,因此,服务器不需要保存以前为请求提供服务过程中使用的变量的信息。IIS 7.0可以使用ASP.NET会话状态保存数据和提取数据,这样可以为在Web网站中漫游的用户提供一些信息。
模式
我们可以使用以下5种模式设置会话状态:
(1)Not Enabled模式
在该模式下,Web网站没有使用会话状态。
(2)In Process模式
在该模式下,内存中的会话状态是与应用程序的工作进程绑定的,In Process模式也是IIS 7.0的默认模式。在系统为会话状态提供响应时,这种模式下系统的响应速度最快。然而使用In Process会话状态的缺点是会话中需要保存比较多的数据,因此需要消耗比较多的内存,最终可能会导致服务器性能下降。
如果在In Process模式下保存会话状态,那么必须牢记:当回收工作进程时,保存在内存中的所有数据都将丢失。如果应用程序需要继续使用会话状态数据,那么就必须使用其他的会话状态模式。
IIS 7.0安装了Aspnet_state.exe服务。在默认情况下,该服务没有运行。如果需要在In Process模式下保存会话状态,那么就必须运行Aspnet_state.exe服务。
(3)Custom模式
使用Custom模式保存会话状态时,进程外会话可以使用一个自定义的处理程序来创建一个与数据库的连接。使用自定义的处理程序时,会话状态可以保存在MS SQL之外的数据库中,如Oracle或Access。此时还可以使用一个不是由.NET Framework提供的数据库架构来管理会话状态。为了使用自定义的处理程序,必须在<sessionState> /<providers>集合中实现一个完整的会话状态提供程序。
(4)State Server模式
第二种在进程外保存会话状态的方法是使用State Server模式。在State Server模式中,我们既可以令状态服务进程运行于同一台服务器上,也可以令状态服务进程运行于一个外部服务器中。以State Server模式维护数据时,需要一个单独的工作进程,这个工作进程与ASP.NET应用程序运行的工作进程是分离的。
如果状态服务程序与Web网站运行于同一台服务器上,那么Web网站可以支持运行Web garden。如果Web网站运行于多台服务器上,那么必须指定一台服务器运行状态服务程序,这台服务器可以共享所有Web服务器的状态数据。
与In Process模式类似,State Server模式也需要使用Aspnet_state.exe服务。
(5)SQL Server模式
最后一种保存会话状态的模式是SQL Server模式,这种模式需要使用SQL Server数据库。SQL Server模式与State Server模式类似:可以与Web服务器运行于同一台服务器上,此时这台服务器可以支持一个Web garden;也可以运行于一个外部服务器上,此时这台服务器可以支持一个Web Farm。优势:即使工作进程被回收,会话数据仍然存在。
为了使用SQL Server模式保存会话状态数据,我们同样需要令Aspnet_state.exe服务自动启动运行。此外,SQL Server模式还需要运行InstallSqlState.sql脚本来配置会话状态。该脚本保存在C:\Windows\Microsoft.NET\Framework\v2.0.50727目录下。
与cookie有关的设置
Cookie是保存了用户信息的文本文件,这些用户信息包括身份验证信息,还记录了用户浏览网站的偏好。跟踪会话状态的方法之一就是使用cookie。Cookie都保存在客户的计算机中,由Web服务器使用。当客户向服务器发出请求时,cookie将被放在HTTP头中,随请求一同发给服务器。
我们可以将cookies设置为使用以下4种模式之一:
(1)Auto Detect模式
如果浏览器支持cookie,那么Auto Detect模式将启用cookie。如果一台移动设备连接到了Web服务器,同时这台移动设备禁用了cookie,那么就无法使用cookie。如果某台台式计算机或笔记本计算机连接到了Web服务器,同时这台台式计算机或笔记本计算机禁用了cookie,那么会话状态将保存在URL中。
如果使用了Auto Detect模式,那么需要将会话ID设置为可重新生成的。这样,***者就不会有充分的时间来获取cookie,也不会有充足的时间利用cookie来***Web服务器并非法获取服务器中的内容。Cookie的默认存活时间是20min,可以修改这个时间属性,使cookie的默认存活时间减少到一个安全水平。
(2)Use Cookies模式
如果使用Use Cookies模式,那么,可以在会话过程中利用会话cookie,从而把会话信息和用户信息关联起来。
(3)Use Device Profile模式
如果客户浏览器支持使用cookie,那么Use Device Profile模式可以用cookie保存会话状态。如果客户不浏览器支持使用cookie,那么该模式无法使用cookie。如果设备支持使用cookie,那么无论用户怎样设置cookie,会话状态仍然将使用cookie。
会话ID应该设置为可重新生成的,其原因与Auto Detect模式相同。
(4)Use URI模式
用过使用URI(Uniform Resource Identifier,统一资源标识符)保存会话状态,可以将会话ID作为一个查询字符串,嵌入到URI中。URI随即被重定向到原先的URL。在整个会话过程中都需要使用上述URI。
尽管Use URI模式消除了cookie存在的缺陷,但是Use URI模式仍然具有自身的缺陷。Web页面是不能加入书签的,而且,在不丢失会话状态的情况下,我们无法使用绝对URL。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。