2010-10-14 4 views
1

J'ai défini le contrôle suivant qui sert de wrapper pour un autre contrôle (code simplifié):'Company.Dept.Project.Controls.ControlName' n'est pas autorisé ici car il ne prolonge pas la classe 'System.Web.UI.UserControl'

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); 
     } 
    } 
} 

qui est utilisé dans un contrôle utilisateur:

<%@ Register Assembly="Company.Dept.Project.Controls" Namespace="Company.Dept.Project.Controls TagPrefix="MyControls" %> 
<MyControls:ControlName ID="ControlName1" runat="server" /> 

Lorsqu'il est exécuté localement à partir du serveur de développement ASP.NET, DIT Server et SIT Server, le contrôle rend et fonctionne comme prévu. Cependant, sur le serveur UAT, je reçois l'erreur suivante:

System.Web.HttpException: 'Company.Dept.Project.Controls.MyControls' is not allowed here because it does not extend class 'System.Web.UI.UserControl'

Quelqu'un peut-il fournir une idée des raisons pour lesquelles il échoue dans un environnement, mais pas les autres? Est-ce quelque chose lié à la configuration? Le contrôle utilisateur est hébergé dans un chargeur de contrôle utilisateur de type "SmartPart" qui est utilisé sur un site WSS 3.0 dans les environnements DIT/SIT/UAT.

Merci!

+0

Avez-vous vérifié la visualisation? Est-ce la même version du framework? Que diriez-vous de vérifier la version de System.Web.UI.UserControl dans le GAC dans les deux environnements. –

Répondre

0

Il semble que cette erreur peut se produire lorsqu'un assembly référencé est manquant.

Le problème a été résolu après la reconstruction des packages d'installation et le redéploiement.