8
votes

L'élément 'comportement' a un élément enfant invalide 'myfaultextension' dans wcf app.config

J'essaie d'attraper des exceptions régulières à partir d'un service WCF dans une application client Silverlight. Pour cela, j'ai inclus les changements respectifs dans mon service WCF comme donné Dans cet article de MSDN .

mais lorsque je configure l'extension de comportement et utilisez la même chose dans le comportement de terminaison, l'erreur mentionnée ci-dessus monte et le service ne peut pas fonctionner en raison de cette erreur.

Je pose ici ma configuration. Veuillez suggérer comment puis-je résoudre ce problème? xxx


3 commentaires

Vous pouvez obtenir cette erreur dans Visual Studio lors de la création du fichier de configuration WCF, car l'éditeur VS ne connaît pas cette extension. Mais cela se produit-il à l'exécution aussi ?? Comment et où utilisez-vous ce comportement? Du côté serveur? Du côté du client? Les deux?


Connect.MicRosoft.com/visualstudio/feedback/Détails/619106/...


Dupliqué possible de


5 Réponses :



2
votes

Ceci provoque des problèmes lorsque la version de l'assemblage est auto-interprétée lors de la compilation / de la construction d'assemblage.

fixe depuis .NET 4.0. Version / Culture / PublicKeyToken peut être supprimé Strong> de sorte que la configuration ne nécessite plus la valeur automatique de la version. P>

<behaviorExtensions>
    <add name="serviceKeyBehavior"  
     type="MyNamespace.ServiceKeyBehaviorExtensionElement, MyAssembly"/>
</behaviorExtensions>


0 commentaires

1
votes

Essayez de définir votre wcf dans web.config avec l'éditeur pour empêcher les erreurs. (Surtout lorsque vous devez écrire le nom de type entier).

Cliquez avec le bouton droit de la souris sur le web.config, puis modifier la configuration WCF:

 Entrez la description de l'image ici

Aller à: Advanced -> Extensions -> Extensions d'éléments de comportement -> Nouveau

 Entrez la description de l'image ici

Ensuite, sous (Général) Cliquez sur le petit bouton gauche et choisissez le nouveau comportement. Il écrira le nom de type complet dans l'app.config pour vous.

 Entrez la description de l'image ici

Vous pouvez maintenant voir votre nouveau comportement sous la balise dans l'app.config avec le nom de type correct.


2 commentaires

Chaque fois que j'ouvre cet éditeur d'interface graphique, cela me dit que cela ne peut pas trouver l'Assemblée. Lorsque je l'ajoute à nouveau, enregistrez le fichier, fermez l'éditeur, puis ouvrez à nouveau l'éditeur de l'interface graphique, il s'agit de la même chose. Tout indice pourquoi?


@ S.Tenbrinke Lorsque vous ouvrez l'outil, il désalinise le fichier .config et crée les écrans en fonction de ces données. C'est-à-dire que s'il y a une erreur de syntaxe dans votre fichier de configuration, cela échouera avec un message d'erreur. Notez que parfois, il y a des erreurs sur les étiquettes que leurs assemblées compatibles ne sont pas à l'intérieur du GAC. E.G: Comportements de WCF personnalisés. L'éditeur VS marquez-les avec Soulignes. Dans ce cas, vous devez les déplacer vers le GAC ou commenter les étiquettes avant d'ouvrir cet outil.



5
votes

J'ai eu cette erreur avec mon extension de comportement personnalisé que je voulais ajouter comme comportement de critère. J'ai donc édité le schéma utilisé dans Visual Studio 2017 pour vous débarrasser de l'avertissement dans mon fichier web.config. C'est le même avertissement que vous avez reçu:

L'élément 'Comportement' a invalide élément d'enfant "la douane". Liste des éléments possibles attendus: 'Clientvia, CallbackDebug, CallbackTouts, Clear, CentCredentials, Transactedbatching, DatacontractSérialiseur, Dispatchersynchronisation, Supprimer, SynchronousReceive, Webhttp, EnableWebScript, EndPointDiscovery, Soapprocessing'. P> blockQuote>

mon web.config a: p> xxx pré>

Le nœud XML de la douane de la douane de laïenne a toujours eu la ligne bleus gligly sous le studio Visual Studio. Il apparaît comme un avertissement dans la fenêtre de la liste d'erreurs. Je voulais m'en débarrasser car chaque fois que j'essayais de mettre à jour une référence de service, cela échouerait à cause de l'avertissement dans web.config. P>

Donc, pour le réparer, vous devez Modifiez le schéma que Visual Studio utilise pour valider les éléments em>. Donc, j'ai ouvert mon web.config, puis sélectionné XML dans la principale barre de menus Visual Studio. Puis sélectionnez Schemas. Vous obtiendrez une longue liste de schémas. Trouver "DotNetConfig.xsd" (ou dotnetconfig [xx] .xsd où xx est la version de Framework .NET) Comme indiqué ci-dessous. Entrez la description de l'image ici p>

mise à jour: vous pourriez Voulez-vous modifier tous les fichiers XSD avec le préfixe de fichier DotNetConfig. En règle générale, vous ne souhaitez pas utiliser tous les fichiers DotNetConfigXX.xsd à la fois. Il est préférable d'avoir l'option "Utiliser cette schéma" (dans la colonne Utilisation) activée pour un seul; Sinon, vous pouvez voir des erreurs sur les éléments de schéma déjà définis. P>

Parcourez le chemin affiché dans la colonne Emplacement et modifiez le fichier XSD. Recherchez: Code> P>

Ajoutez une nouvelle XS: nœud d'élément dans le nœud XS: choix de choix avec le nom de votre extension de comportement personnalisé; Dans mon cas, la douane de douane. Enregistrez le fichier et Visual Studio doit valider automatiquement au nouveau schéma et vous ne devez plus obtenir un avertissement dans votre web.config plus longtemps. P>

<xs:element name="behavior" vs:help="configuration/system.serviceModel/behaviors/endpointBehaviors/behavior">
<xs:complexType>
<xs:annotation>
    <xs:documentation>The behavior element contains a collection of settings for the behavior of an endpoint.</xs:documentation>
</xs:annotation>
<xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="CustomSecurity" vs:help="configuration/system.serviceModel/behaviors/endpointBehaviors/behavior/CustomSecurity">
        <xs:complexType>
            <xs:annotation>
                <xs:documentation>Specifies the behavior extension class applied to the endpoint.</xs:documentation>
            </xs:annotation>
            <xs:anyAttribute namespace="http://schemas.microsoft.com/XML-Document-Transform" processContents="strict" />
        </xs:complexType>
    </xs:element>
    <xs:element name="clientVia" vs:help="configuration/system.serviceModel/behaviors/endpointBehaviors/behavior/clientVia">
        <xs:complexType>
            <xs:annotation>
                <xs:documentation>Specifies the URI for which the transport channel should be created.</xs:documentation>
            </xs:annotation>
            <xs:attribute name="viaUri" type="xs:string" use="optional">
                <xs:annotation>
                    <xs:documentation>A string that specifies a URI that indicates the route a message should take.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="lockAttributes" type="xs:string" use="optional" />
            <xs:attribute name="lockAllAttributesExcept" type="xs:string" use="optional" />
            <xs:attribute name="lockElements" type="xs:string" use="optional" />
            <xs:attribute name="lockAllElementsExcept" type="xs:string" use="optional" />
            <xs:attribute name="lockItem" type="boolean_Type" use="optional" />
            <xs:anyAttribute namespace="http://schemas.microsoft.com/XML-Document-Transform" processContents="strict" />
        </xs:complexType>
    </xs:element>


2 commentaires

Cette approche a également fonctionné pour moi, pour fixer un avertissement sur CORS. Mon projet utilise 4.6.1, donc j'ai éditéd schemas / 1033 / dotnetconfig.xsd et schemas / dontnetconfig45.xsd (il n'y ait pas de 461.xsd). Semblait faire l'affaire.


J'ai pu construire à VS 2017 sans cela, mais la ligne gigantesque me plongeait des noix. Merci!



1
votes

La solution de l'ICODE a fonctionné pour moi, mais je devais modifier toutes les versions de dotnetcofifig4x.xsd fichiers trouvés dans ... XML / Schemas /. x in 4x.xsd Signification 40.xsd, 45.xsd, 47.xsd et 471.xsd


0 commentaires