Question

J'ai configuré un contrôle ActiveX pour qu'il s'exécute sur une page Web. Le serveur est capable de servir cette page Web à lui-même, mais les autres machines sur l'intranet et Internet ne peuvent pas y accéder.

Les paramètres de Caspol ressemblent à ceci:

Groupes de codes:

1.  All code: FullTrust
   1.1.  Zone - MyComputer: FullTrust
      1.1.1.  StrongName - (omitted) : FullTrust
      1.1.2.  StrongName - 00000000000000000400000000000000: FullTrust
   1.2.  Zone - Intranet: FullTrust
      1.2.1.  All code: Same site Web
      1.2.2.  All code: Same directory FileIO - 'Read, PathDiscovery'
   1.3.  Zone - Internet: Internet
      1.3.1.  All code: Same site Web
   1.4.  Zone - Untrusted: Nothing
   1.5.  Zone - Trusted: Internet
      1.5.1.  All code: Same site Web
   1.6.  Url - http://MYSERVERNAME/APPLICATIONNAME/*: FullTrust
Success

L’application à laquelle je tente d’accéder est le groupe 1.6. Est-ce que je fais quelque chose de mal ici?

[Modifier] Il est à noter que le journal des erreurs IEDebug sur une machine tentant d'accéder au contrôle à partir de l'intranet affiche une longue exception. Le plus remarquable d'entre eux est:

System.Net.WebPermission
The first permission that failed was:
<IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1">
Était-ce utile?

La solution

Il y a longtemps, j'ai lu quelque part que, pour les contrôles utilisateur .Net, la preuve par URL ne fonctionne pas. Seules les preuves de site et de zone fonctionnent.

caspol -machine -quiet -addgroup Trusted_Zone -site mysite.com FullTrust -name mysite -description "Code group granting trust to code from mysite.com"

Vous pouvez le faire pour chaque zone.

Lorsque vous utilisez IE8, assurez-vous que mysite.com est ajouté à la liste des sites de confiance 3 . Je ne sais pas si le mode protégé doit être désactivé.

Lorsque vous utilisez un système 64 bits, il existe deux caspol, avec des autorisations distinctes:

  • C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ caspol.exe
  • C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ caspol.exe

Je passe beaucoup de temps à définir des autorisations sur le caspol 32 bits, puis à me cogner la tête contre le mur, car cela ne fonctionnerait pas. Il s'avère que j'ai utilisé IE8 64 bits parce que cela a fait un IEDebug.log. Il est préférable de définir les autorisations sur les deux versions.

Autres conseils

Il s’avère que ce n’est pas du tout un problème de confiance. Une DLL nécessaire à l'exécution de l'application ne se trouvait pas dans le répertoire bin de l'application. Par conséquent, l'application tentait d'extraire la DLL requise du GAC, ce qui n'était pas correct. Le déploiement avec la DLL requise a résolu le problème.

En note de bas de page - il s’agit d’un mécanisme de livraison très ancien et obsolète pour les logiciels, qui, espérons-le, ne sera plus utilisé. Déboguer ces types d’erreurs est beaucoup plus difficile qu’il ne devrait l’être. Il est recommandé de choisir un meilleur mécanisme de diffusion que les contrôles intégrés.

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