Я определил следующий элемент управления, который служит оболочкой для другого элемента управления (упрощенный код):
using System.ComponentModel;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Company.Dept.Project.Controls.ControlName
{
[
AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal),
AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal),
DefaultProperty("Text"),
ValidationProperty("Text"),
ToolboxData("<{0}:ControlName runat=\"server\"> </{0}:ControlName>")
]
public class ControlName : WebControl, INamingContainer
{
private TextBox _myTextBox;
public string Text
{
get
{
EnsureChildControls();
return _myTextBox.Text;
}
}
protected override void CreateChildControls()
{
_myTextBox = new TextBox { ID = "MyTextBox" };
Controls.Add(_myTextBox);
}
}
}
Что используется в пользовательском элементе управления:
<%@ Register Assembly="Company.Dept.Project.Controls" Namespace="Company.Dept.Project.Controls TagPrefix="MyControls" %>
<MyControls:ControlName ID="ControlName1" runat="server" />
При локальном запуске с Сервера разработки ASP.NET, Сервера DIT и Сервера SIT элемент управления отображается и работает, как ожидалось. Однако на сервере UAT я получаю следующую ошибку:
System.Web.HttpException: «Company.Dept.Project.Controls.MyControls» здесь не разрешено, поскольку он не расширяет класс «System.Web.UI.UserControl»
Может ли кто-нибудь дать представление о том, почему он не работает в одной среде, но не в других? Это связано с конфигурацией? Пользовательский элемент управления размещается в загрузчике пользовательских элементов управления в стиле «SmartPart», который используется на сайте WSS 3.0 в средах DIT / SIT / UAT.
Спасибо!