Question

J'ai une bibliothèque de classe compilée contenant un contrôle utilisateur et j'aimerais l'ajouter à une page Web. J'ajoute une balise d'objet à la page html qui ressemble à:

 <OBJECT id="Main" classid="http://localhost/HelloWorld/Hello.World.dll#Hello.World.UserControl"></OBJECT>

Cependant, le contrôle n'est pas affiché. La DLL se rend dans mes fichiers temporaires et la zone d’objet de la page Web est vide. Je reçois dans mes fichiers Internet temporaires un message d'erreur ressemblant à:

  

? FusionBindError! name = Hello.World.dll Hello.World.UserControl

Je ne sais pas comment résoudre ce problème. Je me demande si c'est un problème de nomspacing?

[Modifier]

L'erreur suivante s'est retrouvée dans le journal:

Creating security manager

Microsoft.IE.Manager: Microsoft.IE.Manager: unique id lgth = 42
Microsoft.IE.SecureFactory: Create SecureFactory() with security information
Microsoft.IE.Manager: Created secure factory
Microsoft.IE.SecureFactory: Creating instance of the object in the correct domain
Microsoft.IE.SecureFactory: pUrl = http://localhost/HelloWorld/
Microsoft.IE.SecureFactory: id = 86474707A31303E2234383E24333E2135330000000
Microsoft.IE.SecureFactory: link = 
Microsoft.IE.SecureFactory: licenses = 
Microsoft.IE.SecureFactory: deployment manifest = 
Microsoft.IE.SecureFactory: Security options = ZoneEvidence, SiteEvidence
Microsoft.IE.Manager: Url = http://localhost/HelloWorld/
Microsoft.IE.Manager: UrlGetPartW returned 0
Microsoft.IE.Manager: UrlGetPartW returned 80070057
Microsoft.IE.Manager: CodeBase = http://10.248.43.15
Microsoft.IE.Manager: Application = HelloWorld
Microsoft.IE.Manager: Found a codebase
Microsoft.IE.Manager: UrlCanonicalize returned 0
Microsoft.IE.SecureFactory: URL codeBase: http://localhost/
Microsoft.IE.SecureFactory: URL application: HelloWorld
Microsoft.IE.SecureFactory: Locating domain for http://localhost/
Microsoft.IE.IDKey: Created key
Microsoft.IE.Manager: The domain does not exist.
Microsoft.IE.IDKey: Created key
Microsoft.IE.Manager: The domain does not exist.
Microsoft.IE.SecureFactory: Need to create domain
Microsoft.IE.SecureFactory: Application base: http://localhost/
Microsoft.IE.SecureFactory: Private Bin Path: bin
Microsoft.IE.IDKey: Created key
Microsoft.IE.SecureFactory: Trying to create instance of type http://localhost/HelloWorld/Hello.World.dll#Hello.World.Main
Microsoft.IE.SecureFactory: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'ComponentFactory.Krypton.Toolkit.KryptonManager' threw an exception. ---> System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
   at System.Windows.Forms.ToolStripManager.set_Renderer(ToolStripRenderer value)
   at ComponentFactory.Krypton.Toolkit.KryptonManager.b()
   at ComponentFactory.Krypton.Toolkit.KryptonManager..cctor()
The action that failed was:
Demand
The type of the first permission that failed was:
System.Security.Permissions.UIPermission
The first permission that failed was:
<IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Window="AllWindows"/>

The demand was for:
<PermissionSet class="System.Security.PermissionSet"
version="1">
<IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Window="AllWindows"/>
</PermissionSet>

The granted set of the failing assembly was:
<PermissionSet class="System.Security.PermissionSet"
version="1">
<IPermission class="System.Security.Permissions.FileDialogPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Access="Open"/>
<IPermission class="System.Security.Permissions.IsolatedStorageFilePermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Allowed="ApplicationIsolationByUser"
UserQuota="512000"/>
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Flags="Execution"/>
<IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Window="SafeTopLevelWindows"
Clipboard="OwnClipboard"/>
<IPermission class="System.Security.Permissions.SiteIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Site="localhost"/>
<IPermission class="System.Security.Permissions.UrlIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Url="http://localhost/HelloWorld/Hello.World.dll"/>
<IPermission class="System.Security.Permissions.ZoneIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Zone="Internet"/>
<IPermission class="System.Drawing.Printing.PrintingPermission, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
version="1"
Level="SafePrinting"/>
<IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1">
<ConnectAccess>
<URI uri="(http|https)://localhost/*"/>
</ConnectAccess>
</IPermission>
</PermissionSet>

The assembly or AppDomain that failed was:
Hello.World, Version=1.0.3460.18220, Culture=neutral, PublicKeyToken=null
The method that caused the failure was:
Void InitializeComponent()
The Zone of the assembly that failed was:
Internet
The Url of the assembly that failed was:
http://localhost/HelloWorld/Hello.World.dll
   --- End of inner exception stack trace ---
   at ComponentFactory.Krypton.Toolkit.KryptonManager.get_CurrentGlobalPalette()
   at ComponentFactory.Krypton.Toolkit.VisualPanel..ctor()
   at ComponentFactory.Krypton.Toolkit.KryptonPanel..ctor()
   at Hello.World.BottomPanel.InitializeComponent()
   at Hello.World.BottomPanel..ctor()
   at Hello.World.Main.InitializeComponent()
   at Hello.World.Main..ctor()
   --- End of inner exception stack trace ---
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
   at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateComInstanceFrom(String assemblyName, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
   at System.AppDomain.CreateComInstanceFrom(String assemblyFile, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
   at System.AppDomain.CreateComInstanceFrom(String assemblyFile, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
   at Microsoft.IE.SecureFactory.CreateInstanceWithSecurity2(Int32 dwFlags, Int32 dwZone, String wszSite, String wszId, String wszConfig, String wszLicenses, String wszDeploymentManifest)
Microsoft.IE.SecureFactory: LOG exception
Microsoft.IE.SecureFactory: Creating log entry ?FusionBindError!name=Hello.World.dll Hello.World.Main
Microsoft.IE.SecureFactory: Logging to file C:\Documents and Settings\----\Local Settings\Temporary Internet Files\Content.IE5\F84FN98R\CAMF3O8J.HTM

Le fichier journal des erreurs IEHost (CAMF308J.HTM) contenait:

*****   IEHOST Error Log (Monday, 22 June 2009 12:00)   *****



URL:        http://localhost/HelloWorld/Hello.World.dll
Zone:       3
Assembly Name:  Hello.World.dll
Type Name:  Hello.World.Main



----- Thrown Exception -----


System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'ComponentFactory.Krypton.Toolkit.KryptonManager' threw an exception. ---> System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
   at System.Windows.Forms.ToolStripManager.set_Renderer(ToolStripRenderer value)
   at ComponentFactory.Krypton.Toolkit.KryptonManager.b()
   at ComponentFactory.Krypton.Toolkit.KryptonManager..cctor()
The action that failed was:
Demand
The type of the first permission that failed was:
System.Security.Permissions.UIPermission
The first permission that failed was:


The demand was for:




The granted set of the failing assembly was:
















The assembly or AppDomain that failed was:
Hello.World, Version=1.0.3460.18220, Culture=neutral, PublicKeyToken=null
The method that caused the failure was:
Void InitializeComponent()
The Zone of the assembly that failed was:
Internet
The Url of the assembly that failed was:
http://localhost/HelloWorld/Hello.World.dll
   --- End of inner exception stack trace ---
   at ComponentFactory.Krypton.Toolkit.KryptonManager.get_CurrentGlobalPalette()
   at ComponentFactory.Krypton.Toolkit.VisualPanel..ctor()
   at ComponentFactory.Krypton.Toolkit.KryptonPanel..ctor()
   at Hello.World.BottomPanel.InitializeComponent()
   at Hello.World.BottomPanel..ctor()
   at Hello.World.Main.InitializeComponent()
   at Hello.World.Main..ctor()
   --- End of inner exception stack trace ---
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
   at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateComInstanceFrom(String assemblyName, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
   at System.AppDomain.CreateComInstanceFrom(String assemblyFile, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
   at System.AppDomain.CreateComInstanceFrom(String assemblyFile, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
   at Microsoft.IE.SecureFactory.CreateInstanceWithSecurity2(Int32 dwFlags, Int32 dwZone, String wszSite, String wszId, String wszConfig, String wszLicenses, String wszDeploymentManifest)
Était-ce utile?

La solution

Ce fichier contient une trace de pile. Si vous le publiez, je pourrais peut-être vous aider.

De plus, vous devez avoir une confiance totale dans le site configuré dans votre panneau de configuration .NET x.x Configuration (ou utiliser CASPOL pour le définir).

Voici comment déboguer

  1. Utilisez fiddler (google, download et run).
  2. Actualiser la page
  3. Le contrôle est-il téléchargé? Obtenez-vous un HTTP 500 - si tel est le cas, désactivez la rubrique "Scripts et exécutables". sur le répertoire dans IIS --- IIS pense qu'il s'agit d'une DLL ISAPI et l'exécute si vous êtes tous exécutables
  4. Avez-vous un lien de fusion (ce que vous avez) - ce qu’il contient - devrait être une trace de pile - l’avez-vous jeté? Pouvez-vous réparer?
  5. Votre site est-il totalement sécurisé?

Autres conseils

Remarque: IE8 désactive les contrôles de l'utilisateur dans la zone Internet. N'oubliez donc pas cela si vous envisagez de le déployer dans un environnement de production.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top