我已经定义了以下控件,它用作另一个控件的包装器(简化代码):
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”样式的用户控件加载器中,该加载器正在DIT / SIT / UAT环境中的WSS 3.0站点上使用。
谢谢!
答案 0 :(得分:0)
当缺少引用的程序集时,似乎会发生此错误。
重建安装包并重新部署后问题得以解决。