Funktionskompatibilität für teilweise VertrauenswürdigkeitPartial Trust Feature Compatibility

Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) unterstützt in einer teilweise vertrauenswürdigen Umgebung eine eingeschränkte Teilmenge seiner Funktionalität. supports a limited subset of functionality when running in a partially-trusted environment. Die in einer teilweise vertrauenswürdigen Umgebung unterstützten Funktionen sind, wie im Thema Supported Deployment Scenarios beschrieben, für einen speziellen Satz von Szenarios konzipiert.The features supported in partial trust are designed around a specific set of scenarios as described in the Supported Deployment Scenarios topic.

Minimal erforderliche BerechtigungenMinimum Permission Requirements

WCFWCF unterstützt eine Teilmenge von Funktionen in Anwendungen, die unter einem der beiden folgenden benannten Standardberechtigungssätze ausgeführt werden: supports a subset of features in applications running under either of the following standard named permission sets:

  • Berechtigungen für mittlere VertrauenswürdigkeitMedium Trust permissions

  • InternetzonenberechtigungenInternet Zone permissions

Der Versuch, WCFWCF in teilweise vertrauenswürdigen Anwendungen mit strikteren Berechtigungen zu verwenden, kann zur Laufzeit zu Sicherheitsausnahmen führen.Attempting to use WCFWCF in partially-trusted applications with more restrictive permissions may result in security exceptions at runtime.

VerträgeContracts

Beim Ausführen in teilweise vertrauenswürdigen Umgebungen unterliegen Verträge den folgenden Einschränkungen:Contracts are subject to the following restrictions when running under partial trust:

  • Die Dienstklasse, durch die die [ServiceContract] -Schnittstelle implementiert wird, muss public sein und über einen public -Konstruktor verfügen.The service class that implements the [ServiceContract] interface must be public and have a public constructor. Werden [OperationContract] -Methoden definiert, müssen diese publicsein.If it defines [OperationContract] methods, these must be public. Wird stattdessen eine [ServiceContract] -Schnittstelle implementiert, können diese Methodenimplementierungen explizit oder privatesein, vorausgesetzt, die [ServiceContract] -Schnittstelle ist public.If it instead implements a [ServiceContract] interface, those method implementations can be explicit or private, provided that the [ServiceContract] interface is public.

  • Bei Verwendung des [ServiceKnownType] -Attributs muss die angegebene Methode publicsein.When using the [ServiceKnownType] attribute, the method specified must be public.

  • [MessageContract] -Klassen und ihre Member können publicsein.[MessageContract] classes and their members can be public. Ist in der Anwendungsassembly die [MessageContract] -Klasse definiert, kann diese internal sein und Member vom Typ internal besitzen.If the [MessageContract] class is defined in the application assembly it can be internal and have internal members.

Vom System bereitgestellte BindungenSystem-Provided Bindings

Sowohl BasicHttpBinding als auch WebHttpBinding werden in einer teilweise vertrauenswürdigen Umgebung vollständig unterstützt.The BasicHttpBinding and WebHttpBinding are fully supported in a partial trust environment. WSHttpBinding wird nur für den Transportsicherheitsmodus unterstützt.The WSHttpBinding is supported for Transport security mode only.

Bindungen, die andere Transportoptionen als HTTP verwenden, etwa NetTcpBinding, NetNamedPipeBindingoder NetMsmqBinding, werden in einer teilweise vertrauenswürdigen Umgebung nicht unterstützt.Bindings that use transports other than HTTP, such as the NetTcpBinding, the NetNamedPipeBinding, or the NetMsmqBinding, are not supported when running in a partial trust environment.

Benutzerdefinierte BindungenCustom Bindings

Benutzerdefinierte Bindungen können in einer teilweise vertrauenswürdigen Umgebung erstellt und verwendet werden. Für sie gelten jedoch die in diesem Abschnitt genannten Einschränkungen.Custom bindings can be created and used in a partial trust environment, but must follow the restrictions specified in this section.

TransportprotokolleTransports

Die einzigen zulässigen Transportbindungselemente sind HttpTransportBindingElement und HttpsTransportBindingElement.The only allowed transport binding elements are HttpTransportBindingElement and HttpsTransportBindingElement.

EncoderEncoders

Folgende Encoder sind zulässig:The following encoders are allowed:

MTOM (Message Transmission Optimization Mechanism)-Encoder werden nicht unterstützt.The Message Transmission Optimization Mechanism (MTOM) encoders are not supported.

SicherheitSecurity

Teilweise vertrauenswürdige Anwendungen können zum Schutz ihrer Kommunikation die Funktionen von WCFWCFfür die Sicherheit auf Transportebene verwenden.Partially-trusted applications can use WCFWCF's transport-level security features for securing their communication. Sicherheit auf Nachrichtenebene wird nicht unterstützt.Message-level security is not supported. Wird eine Bindung für die Verwendung von Sicherheit auf Nachrichtenebene konfiguriert, löst dies zur Laufzeit eine Ausnahme aus.Configuring a binding to use message-level security results in an exception at runtime.

Nicht unterstützte BindungenUnsupported Bindings

Bindungen, die zuverlässiges Messaging, Transaktionen oder Sicherheit auf Nachrichtenebene verwenden, werden nicht unterstützt.Bindings that use reliable messaging, transactions, or message-level security are not supported.

SerialisierungSerialization

Sowohl DataContractSerializer als auch XmlSerializer werden in einer teilweise vertrauenswürdigen Umgebung unterstützt.Both the DataContractSerializer and the XmlSerializer are supported in a partial trust environment. Allerdings unterliegt die Verwendung von DataContractSerializer den folgenden Bedingungen:However, use of the DataContractSerializer is subject to the following conditions:

  • Alle serialisierbaren [DataContract] -Typen müssen als publicdeklariert sein.All serializable [DataContract] types must be public.

  • Alle serialisierbaren [DataMember] -Felder oder -Eigenschaften in einem [DataContract] -Typ müssen öffentlich sein und Schreib-/Lesezugriff besitzen.All serializable [DataMember] fields or properties in a [DataContract] type must be public and read/write. Die Serialisierung und die Deserialisierung von readonly -Feldern wird nicht unterstützt, wenn WCFWCF in einer teilweise vertrauenswürdigen Anwendung ausgeführt wird.The serialization and deserialization of readonly fields is not supported when running WCFWCF in a partially-trusted application.

  • Das [Serializable]/ISerializable- Programmiermodell wird in einer teilweise vertrauenswürdigen Umgebung nicht unterstützt.The [Serializable]/ISerializable programming model is not supported in a partial trust environment.

  • Bekannte Typen müssen im Code oder in einer Konfiguration auf Computerebene (machine.config) angegeben werden.Known types must be specified in code or machine-level configuration (machine.config). Bekannte Typen können aus Sicherheitsgründen nicht in einer Konfiguration auf Anwendungsebene angegeben werden.Known types cannot be specified in application-level configuration for security reasons.

  • Typen, die IObjectReference implementieren, lösen in einer teilweise-vertrauenswürdigen Umgebung eine Ausnahme aus.Types that implement IObjectReference throw an exception in a partially-trusted environment.

Im Abschnitt zur Serialisierung finden Sie unter Partial Trust Best Practices weitere Informationen zur Sicherheit bei der Verwendung von DataContractSerializer in einer teilweise vertrauenswürdigen Umgebung.See the Serialization section in Partial Trust Best Practices for more information about security when using DataContractSerializer safely in a partially-trusted application.

AuflistungstypenCollection Types

Einige Auflistungstypen implementieren sowohl IEnumerable<T> als auch IEnumerable.Some collection types implement both IEnumerable<T> and IEnumerable. Beispiele dafür sind Typen, die ICollection<T>implementieren.Examples include types that implement ICollection<T>. Solche Typen können eine public -Implementierung von GetEnumerator()und eine explizite Implementierung von GetEnumerator()enthalten.Such types can implement a public implementation of GetEnumerator(), and an explicit implementation of GetEnumerator(). In diesem Fall ruft DataContractSerializer die public -Implementierung von GetEnumerator()auf, und nicht die explizite Implementierung von GetEnumerator().In this case, DataContractSerializer invokes the public implementation of GetEnumerator(), and not the explicit implementation of GetEnumerator(). Wenn keine der GetEnumerator() -Implementierungen public ist, sondern es sich bei allen um explizite Implementierungen handelt, ruft DataContractSerializer IEnumerable.GetEnumerator()auf.If none of the GetEnumerator() implementations are public and all are explicit implementations, then DataContractSerializer invokes IEnumerable.GetEnumerator().

Wird WCFWCF in einer teilweise vertrauenswürdigen Umgebung ausgeführt, und ist keine der GetEnumerator() -Implementierungen publicoder ist keine von ihnen eine explizite Schnittstellenimplementierung, wird eine Sicherheitsausnahme ausgelöst.For collection types when WCFWCF is running in a partial trust environment, if none of the GetEnumerator() implementations are public, or none of them are explicit interface implementations, then a security exception is thrown.

NetDataContractSerializerNetDataContractSerializer

Viele .NET Framework-Auflistungstypen (wie List<T>, ArrayList, Dictionary<TKey,TValue> und Hashtable ) werden vom NetDataContractSerializer in teilweise vertrauenswürdigen Umgebungen nicht unterstützt.Many .NET Framework collection types such as List<T>, ArrayList, Dictionary<TKey,TValue> and Hashtable are not supported by the NetDataContractSerializer in partial trust. Für diese Typen ist das [Serializable] -Attribut festgelegt. Wie bereits im Abschnitt zur Serialisierung erwähnt, wird dieses Attribut in teilweise vertrauenswürdigen Umgebungen nicht unterstützt.These types have the [Serializable] attribute set, and as stated previously in the Serialization section, this attribute is not supported in partial trust. Der DataContractSerializer behandelt Auflistungen auf besondere Weise, weshalb diese Einschränkung von ihm umgangen werden kann, NetDataContractSerializer verfügt jedoch über keine Möglichkeit zum Umgehen dieser Einschränkung.The DataContractSerializer treats collections in a special way and is thus able to get around this restriction, but the NetDataContractSerializer has no such mechanism to circumvent this restriction.

Der DateTimeOffset -Typ wird vom NetDataContractSerializer in teilweiser vertrauenswürdigen Umgebungen nicht unterstützt.The DateTimeOffset type is not supported by the NetDataContractSerializer in partial trust.

Beim Ausführen in teilweise vertrauenswürdigen Umgebungen kann mit dem NetDataContractSerializer (unter Verwendung des SurrogateSelector -Mechanismus) kein Ersatzzeichen verwendet werden.A surrogate cannot be used with the NetDataContractSerializer (using the SurrogateSelector mechanism) when running in partial trust. Beachten Sie, dass diese Einschränkung für die Verwendung (und nicht für die Serialisierung) eines Ersatzzeichens gilt.Note that this restriction applies to using a surrogate, not to serializing it.

Aktivieren von gemeinsamem Verhalten für die AusführungEnabling Common Behaviors to Run

Dienst- oder Endpunktverhaltensweisen nicht gekennzeichnet werden, mit der AllowPartiallyTrustedCallersAttribute -Attribut (APTCA), die hinzugefügt werden, die <CommonBehaviors > Abschnitt einer Konfigurationsdatei werden nicht ausgeführt, wenn in einer teilweise vertrauenswürdigen Anwendung ausgeführt wird Umgebung und keine Ausnahme wird ausgelöst, wenn in diesem Fall.Service or endpoint behaviors not marked with the AllowPartiallyTrustedCallersAttribute attribute (APTCA) that are added to the <commonBehaviors> section of a configuration file are not run when the application runs in a partial trust environment and no exception is thrown when this occurs. Um die Ausführung gemeinsamer Verhalten zu erzwingen, müssen Sie einen der beiden folgenden Schritte ausführen:To enforce the running of common behaviors, you must do one of the following options:

  • Markieren Sie das gemeinsame Verhalten mit dem AllowPartiallyTrustedCallersAttribute -Attribut, damit es ausgeführt werden kann, wenn es als teilweise vertrauenswürdige Anwendung bereitgestellt wird.Mark your common behavior with the AllowPartiallyTrustedCallersAttribute attribute so that it can run when deployed as a partial trust application. Beachten Sie, dass auf dem Computer ein Registrierungseintrag festgelegt werden kann, um die Ausführung von mit APTCA markierten Assemblys zu verhindern.Note that a registry entry can be set on the computer to prevent APTCA-marked assemblies from running. sein..

  • Wenn die Anwendung als voll vertrauenswürdige Anwendung bereitgestellt wird, stellen Sie sicher, dass die Benutzer die Sicherheitseinstellungen für den Codezugriff nicht dahingehend ändern können, dass die Anwendung in einer teilweise vertrauenswürdigen Umgebung ausgeführt werden kann.Ensure that if the application is deployed as a fully-trusted application that users cannot modify the code-access security settings to run the application in a partial trust environment. Wenn sie dies können, dann wird das Verhalten nicht ausgeführt, und es wird keine Ausnahme ausgelöst.If they can do so, the behavior does not run and no exception is thrown. Um dies sicherzustellen, finden Sie unter der Levelfinal -Option Caspol.exe (Code Access Security Policy-Tool).To ensure this, see the levelfinal option using Caspol.exe (Code Access Security Policy Tool).

Beispiel fürFor an example of eines üblichen Verhaltens finden Sie unter How to: Lock Down Endpoints in the Enterprisesein. a common behavior, see How to: Lock Down Endpoints in the Enterprise.

KonfigurationConfiguration

Bis auf eine Ausnahme kann teilweise vertrauenswürdiger Code nur WCFWCF -Konfigurationsabschnitte in der lokalen app.config -Datei laden.With one exception, partially-trusted code can only load WCFWCF configuration sections in the local app.config file. Um WCFWCF -Konfigurationsabschnitte laden zu können, die auf WCFWCF -Abschnitte in der Datei machine.config oder in einer Stammdatei web.config verweisen, ist die Berechtigung ConfigurationPermission(Unrestricted) erforderlich.To load WCFWCF configuration sections that reference WCFWCF sections in machine.config or in a root web.config file requires ConfigurationPermission(Unrestricted). Ohne diese Berechtigung führen Verweise auf WCFWCF -Konfigurationsabschnitte (Verhalten, Bindungen) außerhalb der lokalen Konfigurationsdatei zu einer Ausnahme, wenn die Konfiguration geladen wird.Without this permission, references to WCFWCF configuration sections (behaviors, bindings) outside of the local configuration file results in an exception when the configuration is loaded.

Die Ausnahme ist die Konfiguration für die Serialisierung mit bekannten Typen, wie im Serialisierungsabschnitt dieses Themas beschrieben.The one exception is known-type configuration for serialization, as described in the Serialization section of this topic.

Wichtig

Konfigurationserweiterungen werden nur bei der Ausführung im Modus "Voll vertrauenswürdig" unterstützt.Configuration extensions are only supported when running under Full Trust.

DiagnoseDiagnostics

EreignisprotokollierungEvent Logging

In teilweise vertrauenswürdigen Umgebungen wird eine eingeschränkte Ereignisprotokollierung unterstützt.Limited event logging is supported under partial trust. Nur Dienstaktivierungsfehler und Fehler bei der Ablaufverfolgung/Nachrichtenprotokollierung werden im Ereignisprotokoll protokolliert.Only service activation faults and tracing/message logging failures are logged to the Event Log. Pro Prozess können maximal fünf Ereignisse protokolliert werden. Dadurch soll vermieden werden, dass zu viele Meldungen in das Ereignisprotokoll geschrieben werden.The maximum number of events that can be logged by a process is 5, to avoid writing excessive messages to the Event Log.

NachrichtenprotokollierungMessage Logging

Die Nachrichtenprotokollierung funktioniert nicht, wenn WCFWCF in einer teilweise vertrauenswürdigen Umgebung ausgeführt wird.Message logging does not work when WCFWCF is run in a partial trust environment. Wird sie in einer teilweise vertrauenswürdigen Umgebung aktiviert, schlägt zwar die Dienstaktivierung nicht fehl, jedoch wird keine Nachricht protokolliert.If enabled under partial trust, it does not fail service activation, but no message is logged.

AblaufverfolgungTracing

In einer teilweise vertrauenswürdigen Umgebung ist nur eine eingeschränkte Funktionalität der Ablaufverfolgung verfügbar.Restricted tracing functionality is available when running in a partial trust environment. Dem <listeners>-Element der Konfigurationsdatei können Sie nur den TextWriterTraceListener-Typ und den neuen EventSchemaTraceListener-Typ hinzufügen.In the <listeners> element in the configuration file, the only types that you can add are TextWriterTraceListener and the new EventSchemaTraceListener. Die Verwendung des Standardtyps XmlWriterTraceListener führt möglicherweise zu unvollständigen oder falschen Protokollen.Use of the standard XmlWriterTraceListener may result in incomplete or incorrect logs.

Unterstützte Ablaufverfolgungsquellen sind:Supported trace sources are:

Folgende Ablaufverfolgungsquellen werden nicht unterstützt:The following trace sources are not supported:

Die folgenden Member der TraceOptions -Enumeration sollten nicht angegeben werden.The following members of the TraceOptions enumeration should not be specified:

Wenn Sie die Ablaufverfolgung in einer teilweise vertrauenswürdigen Umgebung verwenden, dann stellen Sie sicher, dass die Anwendung über ausreichende Berechtigungen verfügt, um die Ausgabe des Ablaufverfolgungslisteners speichern zu können.When using tracing in a partial trust environment, ensure that the application has sufficient permissions to store the output of the trace listener. Wenn Sie z.&#160;B. den TextWriterTraceListener verwenden, um die Ablaufverfolgungsausgabe in eine Textdatei zu schreiben, müssen Sie sicherstellen, dass die Anwendung über die notwendigen FileIOPermission-Berechtigungen verfügt, die für das Schreiben in die Ablaufverfolgungsdatei erforderlich sind.For example, when using the TextWriterTraceListener to write trace output to a text file, ensure that the application has the necessary FileIOPermission required to successfully write to the trace file.

Hinweis

Damit die Ablaufverfolgungsdatei nicht mit doppelten Fehlermeldungen überflutet wird, deaktiviert WCFWCF die Ablaufverfolgung der Ressource oder der Aktion nach dem ersten Sicherheitsfehler.To avoid flooding the trace files with duplicate errors, WCFWCF disables tracing of the resource or action after the first security failure. Es gibt eine Ausnahmeablaufverfolgung für jeden fehlgeschlagenen Ressourcenzugriff, und zwar für den ersten Versuch, auf eine Ressource zuzugreifen oder eine Aktion auszuführen.There is one exception trace for each failed resource access, the first time an attempt is made to access the resource or perform the action.

WCF-DiensthostWCF Service Host

DerWCFWCF -Diensthost unterstützt keine teilweise vertrauenswürdigen Umgebungen.WCFWCF service host does not support partial trust. Wenn Sie einen WCFWCF -Dienst in einer teilweise vertrauenswürdigen Umgebung verwenden möchten, dürfen Sie zur Erstellung des Diensts nicht die WCFWCF -Dienstbibliotheks-Projektvorlage in Visual StudioVisual Studio verwenden.If you want to use a WCFWCF service in partial trust, do not use the WCFWCF Service Library Project template in Visual StudioVisual Studio to build your service. Erstellen Sie stattdessen in Visual StudioVisual Studio eine neue Website, indem Sie die WCFWCF -Dienstwebsitevorlage auswählen, die den Dienst auf einem Webserver hosten kann, für den WCFWCF teilweise Vertrauenswürdigkeit unterstützt.Instead, create a new Web site in Visual StudioVisual Studio by choosing the WCFWCF service Web site template, which can host the service in a Web server on which WCFWCF partial trust is supported.

Weitere EinschränkungenOther Limitations

WCFWCF wird allgemein von den Sicherheitsüberlegungen eingeschränkt, die von der Hostanwendung auferlegt werden. is generally limited to the security considerations imposed upon it by the hosting application. Wird WCFWCF z.B. in einer XAML-Browseranwendung (XBAP) gehostet, gelten die XBAP-Einschränkungen, die unter WPF-Sicherheit mit teilweiser Vertrauenswürdigkeitbeschrieben sind.For example, if WCFWCF is hosted in a XAML Browser Application (XBAP), it is subject to XBAP limitations, as described in Windows Presentation Foundation Partial Trust Security.

Die folgenden Zusatzfunktionen stehen nicht zur Verfügung, wenn indigo2 in einer teilweise vertrauenswürdigen Umgebung ausgeführt wird:The following additional features are not enabled when running indigo2 in a partial trust environment:

  • Windows Management Instrumentation (WMI)Windows Management Instrumentation (WMI)

  • Die Ereignisprotokollierung ist nur teilweise aktiviert (siehe Diskussion im Abschnitt Diagnose ).Event logging is only partially enabled (see discussion in Diagnostics section).

  • LeistungsindikatorenPerformance counters

Die Verwendung von WCFWCF -Funktionen in einer teilweise vertrauenswürdigen Umgebung kann dazu führen, dass zur Laufzeit Ausnahmen ausgelöst werden.Use of WCFWCF features that are not supported in a partial trust environment may result in exceptions at runtime.

Nicht aufgeführte FunktionenUnlisted Features

Die beste Möglichkeit festzustellen, ob in einer teilweise vertrauenswürdigen Umgebung auf eine bestimmte Ressource zugegriffen oder eine Aktion ausgeführt werden kann, besteht darin, innerhalb eines try -Blocks auf die Ressource zuzugreifen oder die Aktion auszuführen, und dann einen möglichen Fehlschlag mit catch abzufangen.The best way to discover that a piece of information or action is unavailable when running in a partial trust environment is to try to access the resource or do the action inside of a try block, and then catch the failure. Damit die Ablaufverfolgungsdatei nicht mit doppelten Fehlermeldungen überflutet wird, deaktiviert WCFWCF die Ablaufverfolgung der Ressource oder der Aktion nach dem ersten Sicherheitsfehler.To avoid flooding the trace files with duplicate errors, WCFWCF disables tracing of the resource or action after the first security failure. Es gibt eine Ausnahmeablaufverfolgung für jeden fehlgeschlagenen Ressourcenzugriff, und zwar für den ersten Versuch, auf eine Ressource zuzugreifen oder eine Aktion auszuführen.There is one exception trace for each failed resource access, the first time an attempt is made to access the resource or perform the action.

Siehe auchSee Also

HttpTransportBindingElement
HttpsTransportBindingElement
TextMessageEncodingBindingElement
WebMessageEncodingBindingElement
Unterstützte BereitstellungsszenarienSupported Deployment Scenarios
Bewährte Methoden für teilweise VertrauenswürdigkeitPartial Trust Best Practices