Ich hatte diesen Fehler mit meiner benutzerdefinierten Verhaltenserweiterung, die ich als ein Endpunktverhalten hinzufügen wollte. Also habe ich das in Visual Studio 2017 verwendete Schema bearbeitet, um die Warnung in meiner web.config-Datei loszuwerden. Es ist die gleiche Warnung, die Sie erhalten haben:
Das Element 'behavior' hat ein ungültiges Kindelement 'CustomSecurity'. Liste der erwarteten möglichen Elemente: 'clientVia, callbackDebug, callbackTimeouts, clear, clientCredentials, transactedBatching, dataContractSerializer, dispatcherSynchronization, remove, synchronousReceive, webHttp, enableWebScript, endpointDiscovery, soapProcessing'.
Meine web.config hat:
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="CustomSecurity"
type="FullyQualifiedPath.MyCustomBehaviorExtension, MyAssemblyName"/>
</behaviorExtensions>
</extensions>
<endpointBehaviors>
<behavior name="CustomServiceBehavior">
<CustomSecurity />
</behavior>
</endpointBehaviors>
<endpoint address="https://SomeServer/MyService.svc/soap"
behaviorConfiguration="CustomServiceBehavior" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IProject" contract="ProjectService.IProject"
name="BasicHttpBinding_IProject" />
Der CustomSecurity XML-Knoten hatte in Visual Studio immer die blaue verschnörkelte Linie darunter. Sie wird im Fenster Fehlerliste als Warnung angezeigt. Ich wollte ihn loswerden, denn jedes Mal, wenn ich versuchte, eine Dienstreferenz zu aktualisieren, schlug dies aufgrund der Warnung in web.config fehl.
Um das Problem zu beheben, müssen Sie also das Schema bearbeiten, das Visual Studio zur Validierung von Elementen verwendet . Ich öffnete also meine web.config und wählte dann XML in der Hauptmenüleiste von Visual Studio. Wählen Sie dann Schemas. Sie erhalten eine lange Liste von Schemas. Suchen Sie "DotNetConfig.xsd" (oder DotNetConfig[XX].xsd, wobei XX für die Version des .NET Frameworks steht), wie unten dargestellt.
Update: Sie sollten alle xsd-Dateien mit dem DotNetConfig-Dateipräfix bearbeiten. Normalerweise möchten Sie nicht alle DotNetConfigXX.xsd-Dateien auf einmal verwenden. Am besten ist es, wenn Sie die Option "Dieses Schema verwenden" (in der Spalte "Verwenden") nur für eine einzige Datei aktivieren; andernfalls könnten Sie Fehlermeldungen über bereits definierte Schemaelemente erhalten.
Navigieren Sie zu dem in der Spalte Speicherort angegebenen Pfad und bearbeiten Sie die xsd-Datei. Suchen Sie nach: <xs:element name="behavior" vs:help="configuration/system.serviceModel/behaviors/endpointBehaviors/behavior">
Fügen Sie dann einen neuen xs:element-Knoten innerhalb des xs:choice-Knotens mit dem Namen Ihrer benutzerdefinierten Verhaltenserweiterung hinzu; in meinem Fall CustomSecurity. Speichern Sie die Datei und Visual Studio sollte automatisch anhand des neuen Schemas validieren und Sie sollten keine Warnung mehr in Ihrer web.config erhalten.
<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>
0 Stimmen
Möglicherweise erhalten Sie diesen Fehler in Visual Studio beim Erstellen der WCF-Konfigurationsdatei, da der VS-Editor diese Erweiterung nicht kennt. Tritt dieser Fehler aber auch zur Laufzeit auf? Wie und wo verwenden Sie dieses Verhalten? Auf der Serverseite? Auf der Client-Seite? BotH?
0 Stimmen
connect.microsoft.com/VisualStudio/feedback/details/619106/
0 Stimmen
Mögliche Duplikate von Die Meldung "Element 'Verhalten' hat ungültiges untergeordnetes Element" sollte ignoriert werden, aber die Aktualisierung des Dienstverweises sollte deshalb verhindert werden