導航:首頁 > 解決方法 > 用戶控制項的問題和解決方法

用戶控制項的問題和解決方法

發布時間: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來保存用戶控制項的信息,不用我們自己操心了。

閱讀全文

與用戶控制項的問題和解決方法相關的資料

熱點內容
蟲牙打洞治療方法 瀏覽:871
糖尿病檢測方法題 瀏覽:528
2012年汾酒鑒定方法及技巧 瀏覽:119
如何自己製作竹子的方法 瀏覽:854
面部混合痣的最佳治療方法 瀏覽:361
中種發酵方法和技巧 瀏覽:407
中學生物教學方法ppt 瀏覽:985
怎麼設置qq鈴聲設置方法 瀏覽:64
如何用最快的方法打氣球 瀏覽:827
綠建三星計算方法 瀏覽:601
正確汽車打蠟方法圖解 瀏覽:20
周長有哪些混合運算方法 瀏覽:383
毛細管方法檢測HbA1c優點 瀏覽:665
清洗冰箱方法和步驟 瀏覽:595
如何製作直播的方法 瀏覽:983
腰間盤鍛煉的方法 瀏覽:1006
緩解疲勞的方法都有哪些 瀏覽:856
民間投籃訓練方法 瀏覽:963
哪些方法可以捕捉文案創作靈感 瀏覽:197
手機肌肉訓練方法 瀏覽:721