服务器控件有哪些类型及特点,服务器控件生命周期

文章 3年前 (2021) admin
0
服务器控件有哪些类型及特点,服务器控件生命周期

Q1:asp.net自定义用户控件问题

自定义服务器控件是扩展 ASP.NET Web 服务器控件的功能的一种方式。下文提供了针对自定义服务器控件的用户和开发人员的基本安全准则。有关创建自定义服务器控件的更多信息,请参见开发自定义 ASP.NET 服务器控件。 IDE(如 Microsoft Visual Studio 2005)简化了自定义控件的使用及开发。但是,无论使用哪一 IDE,下面列出的安全准则均适用。 有关 ASP.NET Web 应用程序安全性的常规信息,请参见 ASP.NET Web 应用程序安全性。 针对自定义服务器控件用户的准则 您可以通过多种方式在 Web 应用程序中使用自定义服务器控件,例如,可以将源代码文件直接放在 Web 应用程序的 App_Code 文件夹中,从全局程序集缓存使用控件,或者使用通过自动安装程序(如 Visual Studio 内容安装程序)安装的社区组件。无论在何种情况下,都应采取防范措施以防止导入恶意代码或对 IDE 和承载组件的服务器产生意外但有负面影响的代码。 下面提供了自定义服务器控件的用户应考虑的一些安全准则。此列表可能不够全面,但可以从此着手进行调查: 不要使用不熟悉的代码或不了解其安全隐患的代码。对于社区组件,建议您阅读可用的发行者信息并确定是否对组件进行了签名。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序. 不要仅仅考虑控件的运行时安全性,还要考虑其设计时安全性。有关更多信息,请参见保证自定义控件设计器组件的安全。 如果可能,在强名称程序集中使用自定义控件并选择受信任的发行者。有关更多信息,请参见如何:确定程序集的完全限定名。 使用最少特权帐户运行包括导入的控件的 ASP.NET Web 应用程序。有关使用具有最低权限的标识运行 ASP.NET 进程的更多信息,请参见配置 ASP.NET 进程标识。在诸如 Visual Studio 2005 或 Visual Web Developer 速成版这样的 IDE 中,除非您需要执行管理任务,否则以普通用户的身份而不要以管理员的身份运行应用程序。 有关更多信息,请参见 User Rights and Visual Studio 和 用户权限和 Visual Studio. 查看承载自定义服务器控件的服务器上的操作系统安全性和 Windows 访问控制列表 (ACL)。例如,应确保使用仅具有运行应用程序所需的最低权限的标识来运行 ASP.NET 进程,这样便可将自定义服务器控件导致的安全漏洞对其他承载的应用程序的影响降至最低。有关更多信息,请参见配置 ASP.NET 进程标识。另外,查看自定义服务器控件的权限,并确保它们遵循文件和文件夹权限,ASP.NET Web 应用程序的标识必须具有该权限才能正常工作。有关更多信息,请参见 ASP.NET 必需的访问控制列表 (ACL)。 使用代码访问安全性来限制 Web 应用程序(具有自定义服务器控件)可以访问的资源和可以执行的特权操作。有关更多信息,请参见 ASP.NET 代码访问安全性。 使用 .NET Framework 配置工具 (Mscorcfg.msc) 在全局程序集缓存中管理和配置程序集并调整代码访问安全性策略。因为 Mscorcfg.msc 的用途是帮助高级管理员执行与配置应用程序相关的任务,因此与您的系统管理员合作以确定使用该工具是否符合您的情况。有关更多信息,请参见 .NET Framework 配置工具 (Mscorcfg.msc)。 针对自定义服务器控件开发人员的准则 作为自定义控件的开发人员,您应遵循 ASP.NET 应用程序页和控件以及 .NET Framework 中安全性的常规最佳做法。在许多情况下,自定义服务器控件的用户可能不了解所有实现的详细信息或安全隐患。但是,您应该通过以下内容来计划这一事项:遵循既定的安全约定,并清楚地指出组件正常工作所需的所有权限。您可以从 ASP.NET 网站安全性、.NET Framework 开发人员指南、安全性的基础概念以及“Patterns and Practices Web site”(模式和做法网站) 中安全性主题来着手对常规安全性问题和解决方法进行调查。 设计和实现自定义 Web 服务器控件后,必须确定将组件提供给用户的方法。有两种常用的提供方法:作为程序集提供或作为社区组件提供。如果将组件作为程序集提供,您应对程序集进行签名(也称强名称签名)。签名为程序集提供了唯一标识,其他软件可以使用该标识来识别该程序集并显式引用该程序集。同时,这一方法还可以提供其他好处,使用程序集编程中对这些好处进行了详细介绍。 如果作为具有自动安装过程的社区组件来提供组件,那么您应以加密方式对组件进行签名。签名可以通过创建对特定方唯一的数字签名来帮助验证数据是否发自特定方。其中,创建用于 Visual Studio 2005 的社区组件的一种方法是:使用 Visual Studio 内容安装程序并创建可以对其进行签名的 .vsi 文件。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序. 下面提供了在开发自定义服务器控制组件时应考虑的一些安全准则。此列表可能不够全面,但可以从此着手进行调查: 与自定义服务器控件一同提供有关如何使用这些控件的说明,以及对这些控件正常运行所需的资源和权限的要求。 对组件进行数字签名。如果将自定义控件打包为程序集,则使用强名称对该程序集进行签名。有关更多信息,请参见创建和使用具有强名称的程序集。如果使用自动安装程序(如 Visual Studio 内容安装程序),您仍需要对组件进行签名。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序. 遵循代码中的异常管理的最佳做法。有关更多信息,请参见“Patterns and Practices Web site”(模式和做法网站) 上的“Chapter 10”(第 10 章)。 如果您希望页开发人员将自定义控件添加到可视化设计器的工具箱,则将它们拖到设计图面上,并在属性浏览器中访问其属性和事件,而且,除了要考虑运行时安全性外,还要考虑设计时安全性。有关更多信息,请参见保证自定义控件设计器组件的安全。 了解对 Web 应用程序页和控件的最高威胁,包括代码注入、信息泄漏、会话劫持、身份欺骗、参数操作和网络监听。为此,应在部署前完成对组件的威胁建模分析。有关更多信息,请参见“Patterns and Practices Web site”(模式和做法网站) 上的“Threat Modeling Web Applications”(威胁建模 Web 应用程序) 主题。

Q2:什么是ASP.net中的用户控件

用户控件 (user control) 在 ASP.NET 中:使用与 ASP.NET 页相同的语法,以声明方式创作的服务器控件。该控件用 .ascx 扩展名保存为文本文件。用户控件允许对页功能进行分区和重用。第一次请求时,页框架立即将用户控件分析为从 System.Web.UI.UserControl 派生的类,并将该类编译到一个程序集中;页框架在后面的请求中将重用该程序集。因为用户控件不需要预编译就可以进行页面样式创作和部署,所以开发起来很容易。 在 Windows 窗体中:在应用程序内部或应用程序之间提供一致性行为和用户界面的复合控件。用户控件可以是某个应用程序的本地控件,也可以添加到库中并编译成 DLL 供多个应用程序使用。

Q3:用户控件和服务器控件分别是什么,作用,请详解··

用户控件用户控件 (user control) 在 ASP.NET 中:使用与 ASP.NET 页相同的语法,以声明方式创作的服务器控件。该控件用 .ascx 扩展名保存为文本文件。用户控件允许对页功能进行分区和重用。第一次请求时,页框架立即将用户控件分析为从 System.Web.UI.UserControl 派生的类,并将该类编译到一个程序集中;页框架在后面的请求中将重用该程序集。因为用户控件不需要预编译就可以进行页面样式创作和部署,所以开发起来很容易。 在 Windows 窗体中:在应用程序内部或应用程序之间提供一致性行为和用户界面的复合控件。用户控件可以是某个应用程序的本地控件,也可以添加到库中并编译成 DLL 供多个应用程序使用。 服务器控件一种服务器端组件,它封装了用户界面及其相关的功能。ASP.NET 服务器控件直接或间接地从 System.Web.UI.Control 类派生。ASP.NET 服务器控件的超集包括 Web 服务器控件、HTML 服务器控件和 ASP.NET 移动控件。ASP.NET 服务器控件的页语法在控件的标记上包含 runat="server" 属性。

Q4:ASP.NET里用户控件和WEB窗体的区别?

用户控件使程序员能够很容易地跨ASP.NET WEB应用程序划分和重复使用公共UI功能。与WEB窗体页相同,程序员可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件。此外,与WEB窗体页一样,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请求的响应时间。但与WEB窗体页不同的是,不能独立地请求用户控件,用户控件必须包括在WEB窗体页内才能使用。 与服务器端包含文件(SSI)相比,用户控件通过访问由ASP.NET提供的对象模型支持,使程序员具有更大的灵活性。程序员可以对在控件中声明的任何属性进行编程,而不只是包含其他文件提供的功能,这与其他任何ASP.NET服务器控件一样。 尽管在创作用户控件时需要选择一种语言,但程序员可以将多个用户控件包含在用多种语言创作的一个WEB窗体页中。例如,可以用Visual Basic.NET创造一个用户控件,导入来自XML文件的数据,再用C#创建另一个用户控件,该控件包含一个订单窗体,然后在同一个WEB窗体页中包括这两个控件。 此外,可以独立于包含用户控件的WEB窗体页中除该控件以外的部分来缓存该控件的输出。这一技术称作片段缓存,适当地使用该技术能够提高站点的性能。例如,如果用户控件包含提出数据库请求的ASP.NET服务器控件,但该页的其余部分只包含文本和在服务器上运行的简单代码,则程序员可以对用户控件执行片段缓存,以改进应用程序的性能。2、创建用户控件 可以通过使用文本或HTML编辑器以声明方式创建用户控件。用户控件声明语法与创建WEB窗体页所采用的语法十分类似;两者的主要差别在于用户控件在内容周围不包括<html>、<body>和<form>元素。在包含用户控件的WEB窗体页中包括这些元素。 用户控件可以像文本文件一样简单,或者它们可以包含其他ASP.NET服务器控件。以下过程简要介绍了一个可包括在应用程序多个页上的简单登录窗体。 在代码声明块中公开属性、事件处理程序以及要包括在用户控件功能中的其他任何代码。在使用用户控件的属性时有两个选择。首先,可以定义用户控件的新属性并操作它们。其次,可以操作构成用户控件的服务器控件的属性。例纾�谟没Э丶�猩�鱐extbox WEB服务器控件,并向它提供一个ID为PASSWORD,则可以通过使用PASSWORD. Text语法来操作其Text属性。 【注意】当用户控件包括在WEB窗体页中时,此用户控件中包含的任何ASP.NET服务器控件的所有属性和方法都将提升为此用户控件的公共属性和方法。 步骤1:以下代码示例声明映射到步骤1中代码的文本框的UserId和Password属性。可以通过声明或编程的方式,在任何包含此用户控件的WEB窗体页中操作这些属性。 Public MustInherit Class LoginformInherits System.Web.UI.UserControl Protected WithEvents User As System.Web.UI.WebControls.TextBox Protected WithEvents Pass As System.Web.UI.WebControls.TextBox Protected WithEvents Button1 As System.Web.UI.WebControls.Button #Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()End SubPrivate Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: 此方法调用是 Web 窗体设计器所必需的 '不要使用代码编辑器修改它。 InitializeComponent()End Sub#End RegionPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '在此处放置初始化页的用户代码End SubPublic Property UserId() As [String] Get Return User.Text End Get Set(ByVal Value As [String]) User.Text = Value End SetEnd PropertyPublic Property Password() As [String] Get Return Pass.Text End Get Set(ByVal Value As [String]) Pass.Text = Value End SetEnd PropertyEnd Class 步骤2:创建该用户控件显示的UI元素。以下代码创建与来自步骤1的代码进行交互的登录窗体。 【注意】将此用户控件包括在Web窗体页中时,需要在@Register指令的Src属性中包括此文件名称以及该文件的路径。<%@ Control Language="vb" AutoEventWireup="false" Codebehind="Logonform.ascx.vb" Inherits="logintest.Logonform" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %><TABLE cellSpacing="15"><TR><TD><B>用户姓名: </B></TD><TD><ASP:TextBox id="User" runat="server"></ASP:TextBox></TD></TR><TR><TD><B>用户口令: </B></TD><TD><ASP:TextBox id="Pass" runat="server" TextMode="Password"></ASP:TextBox></TD></TR><TR><TD></TD><TD><ASP:Button id="Button1" runat="server" Text="登录" BorderStyle="Groove"></ASP:Button></TD></TR></TABLE> 3、调用用户控件 只有当包括在WEB窗体页中时,用户控件才可以工作。当一个请求到达某一页而该页包含用户控件时,该用户控件将经历任何服务器控件所要经历的所有处理阶段。 在 WEB 窗体页中包括用户控件的方法很简单。 在要包含用户控件的 WEB 窗体页中,声明一个@Register指令,该指令包括: tagprefix属性,该属性将前缀与用户控件相关联。此前缀将包括在用户控件元素的开始标记中。 tagname属性,该属性将名称与用户控件相关联。此名称将包括在用户控件元素的开始标记中。 Src属性,该属性定义要包括在WEB窗体页中的用户控件文件的虚拟路径。 例如,以下代码将注册在文件LoginForm.ascx中定义的用户控件。该控件还被指定有标记前缀Acme和标记名称Login。<%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".\LoginForm.ascx" %> 使用自定义服务器控件语法在HtmlForm服务器控件的开始标记和结束标记之间 (<form runat=server></form>) 声明该用户控件元素。例如,要声明在上一步导入的控件,使用以下语法。<%@ Page Language="vb" AutoEventWireup="false" Codebehind="logintest.aspx.vb" Inherits="logintest.WebForm1"%><%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".\LoginForm.ascx" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD> <title>WebForm1</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0"> <meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD><body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <Acme:LoginForm id=" LoginForm " runat="server"/> </form></BODY></HTML> 【注意】无论在WEB窗体页上包括了多少个ASP.NET服务器控件(用户控件和其他任何控件),都应只在WEB窗体页上包括一个HtmlForm服务器控件。此控件的开始和结束标记之间应包括所有服务器控件。4、用户控件使用小结 (1)用户控件使开发人员能够使用编写WEB窗体页的相同编程技巧轻松地定义自定义控件。 作为约定,用.ascx文件扩展名指示这样的控件。这样可以确保用户控件文件不能作为独立的WEB窗体页执行。 (2)用户控件通过Register指令包括在另一WEB窗体页中,该指令指定TagPrefix、TagName和Src location。 (3)注册了用户控件后,可以像普通的服务器控件那样将用户控件标记放置在WEB窗体页中(包括runat="server"属性)。在包含WEB窗体页中将用户控件的公共字段、属性和方法提升为该控件的公共属性(标记属性)和方法。 (4)用户控件参与每个请求的整个执行生存期,并且可以处理自己的事件,封装来自包含WEB窗体页的一些页逻辑。 (5)用户控件不应包含任何窗体控件,而应依靠其包含WEB窗体页在必要时包括窗体控件。 (6)可以使用System.WEB.UI.Page类的LoadControl方法以编程方式创建用户控件。用户控件的类型由ASP.NET运行库决定,遵循约定文件名_扩展名。 (7)只有当为用户控件包括了Register指令时,用户控件的强类型才能由包含WEB窗体页使用(即使没有实际声明的用户控件标记)。 5、结束语 在编写WEB应用程序时,如果将可能重复出现的元素都用用户控件来实现,那将大大减少维护代码的代价。而且在修改代码时,记得修改一段代码却忘了修改另一段同样代码的情况也将不存在了。代码越短,出现错误的因素越少,出现错误的可能性就越小。

Q5:asp.net中怎么可以把div标签当做服务器控件来使用呢?

在DIV中加上 runat="server" 如果要在后台访问,加id=“名字”

Q6:ASP.net 用户控件怎么用?

用户控件可以说就是一个容器,用现有的空间组合成一个新的控件组,里面还可以写相应的业务逻辑,以减少代码重用。

版权声明:admin 发表于 2021年11月21日 下午8:01。
转载请注明:服务器控件有哪些类型及特点,服务器控件生命周期 | 热豆腐网址之家

相关文章