Le type n'est pas enregistré comme "Actions personnalisées" sûres
-
09-12-2019 - |
Question
J'essaie de créer des actions personnalisées à l'aide de WSP Builder, ma structure de dossier est une chose comme celle-ci,
Maintenant, lorsque j'essaie de déployer une solution, rien ne propose cependant que je reçois cette erreur dans mon journal ULS,
Impossible de créer un contrôle de l'assemblage '', de la classe '': le contrôle avec nom d'assemblage '', "nom de classe" n'est pas autorisé pour le Web à l'URL ''.Le type n'est pas enregistré comme sûr.
J'ai retiré les noms d'assemblage moi-même, mais je lisais ceci une autre question , ils demandent à ajouter
manifeste.xml , mais pas sûr d'où il ira si la création d'un WSP à l'aide de wspBuilder inclura Manifest.xml dans WSP et résoudra le problème?
La solution
Vous pouvez ajouter un module
Autres conseils
Vous devez ajouter ceci à la fonction FeatureActivée pour les récepteurs de fonctionnalités
SPWebConfigModification safeControl = new SPWebConfigModification();
safeControl.Path = "configuration/SharePoint/SafeControls";
safeControl.Owner = ModuleNameGoesHere;
safeControl.Name = "SafeControl[@Assembly='assembly.Name.goes.Here, Version=1.0.0.0, Culture=neutral, PublicKeyToken=87b3480442bff091'][@Namespace=Namespace.Name.goes.Here'][@TypeName='*'][@Safe='True']";
safeControl.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
safeControl.Sequence = 0;
safeControl.Value = "<SafeControl Assembly='assembly.Name.goes.Here, Version=1.0.0.0, Culture=neutral, PublicKeyToken=87b3480442bff091' Namespace=Namespace.Name.goes.Here' TypeName='*' Safe='True' />";
mService.WebConfigModifications.Add(safeControl);
mService.Update();
mService.ApplyWebConfigModifications();
Le code ci-dessus ajoute la fonctionnalité ou quoi que ce soit pour les contrôles sécurisés dans web.config pour vous! C'est la manière recommandée et les demeurs par les meilleures pratiques. Ainsi, lorsque vous activez la fonctionnalité, il ajoutera les commandes sécurisées :)
plus peut être trouvé ici similaire à l'exemple ci-dessus! et oui, c'est la meilleure pratique et a été placé sur Microsoft Specificaly pour enregistrer Safecontrols sans que vous le faisiez manuellement et que vous obtiendrez automatiquement chaque fois que vous activez la fonctionnalité sur le web.Config utilisé sur le WebApplication, donc pas besoin de le faire manuellement multiple Temps :):
Une collection de modifications web.config est un ensemble de commandes qui, Lorsqu'il est traité par le manipulateur web.config dans Microsoft SharePoint Fondation, modifier l'état du fichier web.config. Vous pouvez chaîner ensemble un ensemble de ces commandes pour s'assurer qu'ils appliquent le souhaité Tags et attributs dans web.config. Chaque modification est exprimée comme objet dans le modèle d'objet administratif.
Utilisez la propriété webconfigmodifications de la SPWEBApplication ou SPWebSservice classe pour obtenir la collection de modifications Web.config soit dans l'application Web ou dans toutes les applications Web dans le Service Web. Appliquer des modifications que vous définissez à travers le SPWEBCONFigModification Classe sur les fichiers Web.config sur le serveur Ferme, appelez la méthode AppelwebConfigModifications sur le courant Objet de service Web de contenu, comme suit: Spwebservice.contentservice.applyWebconfigmodifications
espère qu'il aide :)
Edit 2 Si c'est un WebPart, vous devez avoir un fichier manifeste appelé manifeste.xml avec les éléments suivants:
<?xml version="1.0" encoding="utf-8" ?> <Solution xmlns="http://schemas.microsoft.com/sharepoint/" SolutionId="{C1938CC9-A1A3-4e20-932C-33ECB2C47481}"> <Assemblies> <Assembly DeploymentTarget="GlobalAssemblyCache" Location="WebPartsname.dll"> <SafeControls> <SafeControl Assembly="namespacegoeshere, Version=1.0.0.0, Culture=neutral, PublicKeyToken=918d2ffdab83e9e8" Namespace="namespacegoeshere" TypeName="*" Safe="True"/> </SafeControls> </Assembly> </Assemblies> </Solution>
J'espère que ça met de la lumière :)