导航:首页 > 解决方法 > 用户控件的问题和解决方法

用户控件的问题和解决方法

发布时间:2022-05-11 04:15:46

⑴ 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 应用程序) 主题。

⑵ 关于winform用户控件问题!!求助

遍历一下Controls集合就可以了:

foreach(Control ctl in this.Controls)
{
if(ctl is TextBox) ;//这是个TextBox,存值,名字可以通过Name读出来。
}
上面的代码有限制,就是你的窗体上不能有分组控件(如Panel,GroupBox等),否则里面的TextBox会被忽略,解决方案就是在遍历的时候递归调用自身来检查当前控件的Controls属性。

⑶ ASP.NET 中的用户控件的“当前目录”问题

看你怎么引用了,如果是不通过asp.net而直接写html的a href 或者src引用,那就是放到Page上相对于Page的位置的。

asp.net的服务器控件如HyperLink和Image等需要使用url的地方会自动帮你处理url层级引用问题,所以你只需要指出位置他会帮你做,你可以使用相对位置,比如相对于控件的images目录下面,那么Page在根目录引用用户控件url会自动更新为control/images目录下。或者直接使用应用程序相对目录"~/control/images"这样比较好。

如果你需要自己处理url问题你可以使用一个叫ResolveClientUrl的方法,这个方法在Page和UserControl里面都有(实际上是属于TemplateControl的,Page和UserControl都继承自他),可以帮你把一个Url转换成客户端浏览器可以用的不会访问出错的地址。

⑷ asp.net 用户控件的问题

在用户控件MywebControl中,
private string id;
public string ID
{
get{return this.id;}
set{this.id=value;}
}
在载如该用户控件的页面中,
String userid=((MywebControl)this.LoadControl("用户控件路径")).ID;

⑸ 在winform上添加用户控件过多时出现闪烁

好像有一个什么Style的什么东东,开启一下双缓冲,就是控制刷新的
this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
this.UpdateStyles();

不过几百个控件,你的问题恐怕也没办法从根本上解决,我的方案就是在加载之前先把整个Form给Visable掉,加载完了再显示出来,不过这也是从视觉效果上看起来不闪烁了而已

你可以试试BeginUpdate和EndUpdate,不过几百个控件,想象中肯定效率不佳,可是也不至于这么不佳

⑹ 如何解决ActiveX控件问题

那不是ie的问题 是ie的安全功能之一 。
你进行如下操作可以看到 activex的设置处
打开ie----》工具------》internet选项----》安全----》自定义级别,在这里是设置的。
你把禁用的选择起用就可以 但是电脑的安全性可能会下降
ActiveX控件运行在客户端。我们可以获得客户端的一些信息,如IC卡的信息,客户端的验证等等。但是ActiveX控件也有许多缺点:客户端的部署很困难,如客户端不能正确下载,下载了以后不能正确执行,下载的时候需要设置IE的安全级别等等。

更多的时候,我都在使用COM组件来扩展ASP的功能。准确地说,是服务端运行的Activex Dll组件。使用Server.CreateObject(“工程名.类名”)即可完成对组件的调用。这种方式问题很少,只要组件中以PUBLIC对外暴露方法既可。但是,有时候我们必须使用ACTIVEX 控件(*.OCX)嵌入到网页中执行来获取客户端的信息。这就有了许许多多的一些问题。

这是我们需要解决的N个问题(从简单到难)

1. 如何从服务端获取数据,传递到ActiveX控件中。

1) 初始化时使用参数绑定

2) 运行时得到数据

2. ActiveX控件得到客户端的信息,如何传递到服务端。

3. 安全性

1) 数字签名

2) 使用IOBJSAFE接口

好了,我们开始实例学习。

这个功能演示了如何制作一个简单的控件,并嵌入网页中执行。

工作环境:WINXP+VB6+IE6

我的IE安全设置为安全级别-中。所有的Activex选项设为启用。

打开vb6,新建ActiveX控件工程。

工程名:fOcx,用户控件名:UC1

为了方便,我们使用ActiveX控件接口向导…,菜单->外接程序->外接程序管理器->VB 6 ActiveX控件接口向导。确定即可。

打开ActiveX控件接口向导,下一步,对于可用名称和选定名称我们默认下一步,新建自定义成员,GetInfo类型:属性,下一步,共有方法中选择我们刚才添加的GetInfo,映射到控件选择TxtInfo,成员选择Text,下一步直到完成。代码窗口中会生成一些我们不需要的,删除,剩下的代码如下:

Option Explicit

'注意!不要删除或修改下列被注释的行!

'MappingInfo=txtinfo,txtinfo,-1,Text

Public Property Get GetInfo() As String

GetInfo = txtinfo.Text

End Property

Public Property Let GetInfo(ByVal New_GetInfo As String)

txtinfo.Text() = New_GetInfo

PropertyChanged "GetInfo"

End Property

'从存贮器中加载属性值

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

txtinfo.Text = PropBag.ReadProperty("GetInfo", "Text1")

End Sub

'将属性值写到存储器

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty("GetInfo", txtinfo.Text, "Text1")

End Sub

OK,好了,我们编译成fOcx.ocx文件,然后F5直接运行,VB会打开一个测试页。如下:

E:\Program Files\Microsoft Visual Studio\VB98\UC1.html

同时,打开你的IE浏览器,看到了吧,你做的控件出现在了这个测试页中。

你可以打开测试页,可以看到ClsID,比如:890D1028-298B-45CF-9A64-6ED5A5BACBC9

因为VB编译的时候已经完成注册.所以无法模拟客户端没有安装该控件时出现的提示.

我们继续

使用regsvr32 F:\csdn_vb\com+_activeX\sample1\fOcx.ocx –u卸载

或者

打开注册表,在HKEY_CLASSES_ROOT\CLSID下面找到

890D1028-298B-45CF-9A64-6ED5A5BACBC9项,删除之,当然这种方式还有项存在而没有删除干净.

此时浏览http://yang/uc1.htm,由于IE中ActiveX设置为启动,所以,控件会显示出来。

下载后的ocx到哪里去了???

打开该目录(可能有所不同)E:\WINDOWS.0\Downloaded Program Files,看到了吧,fOcx.UC1文件在这个目录下.

原理:客户端下载该控件后,自动注册,然后放在上述这个目录下.这时我们可以打开注册表看看CLSID,呵呵,还是以前的那个.

我们可以右键看看fOcx.UC1的属性,看看相关内容,这里显示了该OCX所依赖的所有文件.所以,你的OCX尽量减少使用高级控件或者第三方的控件,否则,下载就有些问题了.

如果IE中关于ActiveX的选项设为禁用,那么浏览器就会出现对话框”当前安全设置禁止运行该页中的ActiveX控件.因此可能无法正确显示该页”,这个就需要其他的方式来处理了。

一般用户默认的都是禁用ActiveX选项,所以让用户自己设置不太合适。

⑺ C#中用户控件与其子控件的的事件处理一致的问题

很简单 我可以帮你 等我去找代码 但你一点悬赏都没 都没劲

public delegate void NewClickDelegate(object sender, EventArgs e);
public event NewClickDelegate NewClick;
protected override void OnClick(EventArgs e)
{
if (NewClick != null)
NewClick(this, e);
base.OnClick(e);
}

这可以我的精髓代码 给我加分

private void LbClick(object sender, EventArgs e)
{
OnClick(e);
}

this.lb.Click += new System.EventHandler(LbClick);

⑻ c#中的用户控件问题

为什么运行2次呢?你分析的没错,ctlLabelTextBox是你自定义的一个标签文本,你在里面写的代码。运行的时候,加载窗体的时候将所有嵌在上面的空间执行一次,然后程序再将每个控件执行一次。

⑼ 关于用户控件的问题

<%@ Register TagPrefix="DXBBS" Namespace="DXBBS.Controls" Assembly="DXBBS.Controls" %>
向页面注册控件(用户控件/自定义控件)TagPrefix是前缀名如:<DXBBS:Content id="Main" runat="server"> 和<asp:TextBox/>一个道理.Namespace是命名空间.Assembly是指哪个程序集.
<DXBBS:Content id="Main" runat="server">
很明显 调用的是 Content控件类
如:<asp:textbox id="" runat="">
需安装 dxbbs开源控件

⑽ asp.net定义用户控件时,属性持久化和如何动态加载的问题

1 用户控件的属性持久化问题:(参考:道不远人---深入解析ASP.NET2.0控件开发) 问题描述:在为用户控件属性赋值后,重新刷一次页面或回传一次服务器,用户控件的属性就会消失,但是.NET自带的控件不会出现这种问题。 原因:要解释上面的问题,我们需要回顾一下 HTTP协议的工作模式,HTTP是一种无状态的断开式连接模式,也就是说,客户端向服务器发出请求,服务器端做出响应后就不在维持此次请求客户端的信息。在默认情况下,多次请求来自于同一个客户端还是多个不同的客户端,对于服务端来说处理方式没什么不同。 所以我们单击页面上的按钮,把页面回传到服务器后,服务器并不能把页面中的控件的所有状态还原到上一次请求时设置的值,因为它根本不知道上一次请求是哪一次,也没有为每一次请求保存历史信息。 解决方法: HTTP的这种无状态特征为我们的开发带来了和Winforms开发模型极不一致,用户和控件交互的结果不能保存下来等问题。 而在实际开发过程中,我们又发现ASP 。NET提供的控件却可以很好的在页面回传过程中保存自己的状态。比如,我们在页面中添加一个Label控件,并在按钮事件中添加: this.lblHappy.text += this.lblHappy.text + "again" Label显示的文本可以正确地基于前次请求设置的值再加上“again”,这是怎么回事呢? 原来ASP.NET为了解决保存控件状态的矛盾,引入了一种叫视图(ViewState)的特性。需要在页面回传过程中保存值的控件属性,可以把值保存在视图状态中。(1)ASP.NET框架会在呈现页面前(服务器把页面发送到客户端),把视图状态信息序列化成一个字符串,并保存到页面中一个叫"_VIEWSTATE"的隐藏表单域(<input type = 'hidden'>)中.这样,控件的状态就保存到了客户端。(2)表单域下次回传时(客户端把页面提交到服务器),服务器端再对提交回的_VIEWSTATE隐藏域的值进行反序列化,还原各个控件的状态。 或者这样解释ViewState的原理:当请求某个页面时,ASP.NET把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端。当客户端把页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。当然这些全部是由ASP.NET负责的。 举例说明: Code 2 动态引用用户控件: 直接在页面上用拖拽的方式引用空间是非常简单的,如果想在代码中动态生成可以用如下方法: (控件的类) 名称=(控件的类)this.LoadControl("......ascx") 只需要控件的类名和路径就可以定义一个控件。 示例如下:Code第一行是动态生成一个控件,第二行是为控件的属性赋值,第三行是把控件放到一个容器中,显示控件。结论:动态加载控件太麻烦了,涉及很多内部原理,不如直接把用户控件扔到GridView的模板里,然后给属性赋值来初始化。这样就让.Net来保存用户控件的信息,不用我们自己操心了。

阅读全文

与用户控件的问题和解决方法相关的资料

热点内容
499x32十32简便方法 浏览:752
电子支付器怎么使用方法 浏览:586
365天锻炼方法 浏览:378
rnw使用方法步骤 浏览:504
怎么赚钱方法 浏览:213
用什么方法可以把肉弄成熟 浏览:446
小孩脾虚出夜汗怎么调理食补方法 浏览:682
毛衣鸡心领大了改小的简单方法视频 浏览:433
物理中减小摩擦力的方法有哪些 浏览:895
常用的有机物分析方法 浏览:334
人类有什么打斗方法 浏览:806
人物分析描写方法 浏览:791
皂角刺如何食用方法 浏览:566
研究问卷的方法 浏览:830
古筝琴码的安装方法 浏览:579
国外大学研究方法有哪些 浏览:424
手上鸡眼的图片症状和处理方法 浏览:70
栀子的种植方法和图片 浏览:604
癣的症状和治疗方法 浏览:422
黛珂白檀乳液使用方法 浏览:849