Festlegen der Use-Eigenschaft und der Style-EigenschaftSetting the Use and Style Properties

In diesem Beispiel wird die Verwendung der Use-Eigenschaft und der Style-Eigenschaft in XmlSerializerFormatAttribute und DataContractFormatAttribute veranschaulicht.This sample demonstrates how to use the Use and Style properties on the XmlSerializerFormatAttribute and the DataContractFormatAttribute. Diese Eigenschaften beeinflussen die Formatierung von Nachrichten.These properties affect how messages are formatted. Standardmäßig wird der Nachrichtentext mit dem auf Document festgelegten Format formatiert.By default, the message body is formatted with the style set to Document. Diese Einstellungen können entweder auf der Dienstvertragsebene oder der Vorgangsvertragsebene angegeben werden.These settings can be specified at either the service contract level or the operation contract level.

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.The setup procedure and build instructions for this sample are located at the end of this topic.

Die Style-Stileigenschaft bestimmt, wie die WSDL-Metadaten für den Dienst formatiert werden.The Style style property determines how the WSDL metadata for the service is formatted. Mögliche Werte sind Document und Rpc.Possible values are Document, and Rpc. RPC bedeutet, dass die WSDL-Darstellung von Nachrichten, die für einen Vorgang ausgetauscht wurden, Parameter entsprechend einem Remoteprozeduraufruf enthält.RPC means that the WSDL representation of messages exchanged for an operation contains parameters as if it were a remote procedure call. Nachfolgend finden Sie ein Beispiel:The following is an example.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">  
  <wsdl:part name="n1" type="xsd:double"/>  
  <wsdl:part name="n2" type="xsd:double"/>  
</wsdl:message>  

Das Format auf Document festzulegen, bedeutet, dass die WSDL-Darstellung ein einzelnes Element enthält, das das gegen einen Vorgang ausgetauschte Dokument darstellt. Dies ist im folgenden Beispiel veranschaulicht.Setting the style to Document means that the WSDL representation contains a single element that represents the document that is exchanged for an operation as shown in the following example.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">  
  <wsdl:part name="parameters" element="tns:Add"/>  
</wsdl:message>  

Die Use-Eigenschaft bestimmt das Format der Nachricht.The Use property determines the format of the message. Mögliche Werte sind Literal und Encoded. Der Standardwert ist Literal.Possible values are Literal and Encoded; the default value is Literal. Literal bedeutet, dass die Nachricht eine Literalinstanz des Schemas in der WSDL ist, wie im folgenden Dokument-/Literal-Beispiel dargestellt.Literal means that the message is a literal instance of the schema in the WSDL as shown in the following Document/ Literal example.

<Add xmlns="http://Microsoft.ServiceModel.Samples">  
  <n1>100</n1>  
  <n2>15.99</n2>  
</Add>  

Encoded bedeutet, dass die Schemen in der WSDL abstrakte Spezifikationen sind, die gemäß den Regeln in SOAP 1.1, Abschnitt 5 codiert werden.Encoded means that the schemas in the WSDL are abstract specifications that are encoded according to the rules found in SOAP 1.1 section 5. Es folgt ein RPC/Encoded-Beispiel.The following is an RPC/Encoded example.

<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">  
  <n1 xsi:type="xsd:double" xmlns="">100</n1>  
  <n2 xsi:type="xsd:double" xmlns="">15.99</n2>  
</q1:Add>  

WS-I Basic Profile 1.0 verbietet die Verwendung von Encoded. Sie sollten dies daher nur verwenden, wenn es aufgrund von älteren Diensten erforderlich ist.The WS-I Basic Profile 1.0 prohibits the use of Encoded and you should only use it when required by legacy services. Das Encoded-Nachrichtenformat ist nur bei Verwendung von XmlSerializer verfügbar.The Encoded message format is only available when using the XmlSerializer.

Dieses Beispiel basiert Sie sehen, wie die Nachrichten gesendet und empfangen können, auf die Ablaufverfolgung und Nachrichtenprotokollierung.To allow you to see the messages being sent and received, this sample is based on the Tracing and Message Logging. Die Dienstkonfiguration und der Quellcode wurden geändert, um Ablaufverfolgung und Nachrichtenprotokollierung zu aktivieren und zu verwenden.The service configuration and source code have been modified to enable and utilize tracing and message logging. Darüber hinaus die < xref:System.ServiceModel.WsHttpBinding> hat wurde ohne Sicherheit konfiguriert, sodass protokollierten Nachrichten in einem unverschlüsselten Format angezeigt werden können.In addition, the < xref:System.ServiceModel.WsHttpBinding> has been configured without security, so the logged messages can be viewed in an unencrypted format. Die resultierende Ablaufverfolgungsprotokolle (System.ServiceModel.e2e und Message.log) sollte angezeigt werden, mithilfe der Service Trace Viewer-Tool (SvcTraceViewer.exe).The resulting trace logs (System.ServiceModel.e2e and Message.log) should be viewed by using the Service Trace Viewer Tool (SvcTraceViewer.exe). Die Ablaufverfolgungen sind so konfiguriert, dass sie im Ordner C:\LOGS erstellt werden.The traces are configured to be created in the C:\LOGS folder. Erstellen Sie den Ordner vor dem Ausführen des Beispiels.Create the folder before running the sample. Wählen Sie zum Anzeigen der Nachrichteninhalte im Trace Viewer-Tool Nachrichten in der linken und rechten Bereich des Tools.To view message contents in the Trace Viewer tool, select Messages in both the left and the right panes of the tool.

Im folgenden Code wird der Dienstvertrag veranschaulicht, wobei die Use-Eigenschaft auf OperationFormatUse festgelegt und das Format des Nachrichtentexts vom Standard (OperationFormatStyle) in Document geändert wurde.The following code shows the service contract with the Use property set to OperationFormatUse and the format of the message body changed from the default OperationFormatStyle to Document.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"),  
XmlSerializerFormat(Style = OperationFormatStyle.Rpc,   
                                 Use = OperationFormatUse.Encoded)]  
public interface IUseAndStyleCalculator  
{  
    [OperationContract]  
    double Add(double n1, double n2);  
    [OperationContract]  
    double Subtract(double n1, double n2);  
    [OperationContract]  
    double Multiply(double n1, double n2);  
    [OperationContract]  
    double Divide(double n1, double n2);  
}  

Um den Unterschied zwischen den unterschiedlichen Einstellungen für Use und Style zu verdeutlichen, ändern Sie sie im Dienst, generieren Sie den Client erneut, führen Sie das Beispiel aus, und betrachten Sie dann die Datei "c:\logs\message.logs" im Service Trace Viewer-Tool.To see the difference between the different Use and Style settings, modify them in the service, regenerate the client, run the sample, and examine the c:\logs\message.logs file with the Service Trace Viewer tool. Beachten Sie auch die Auswirkungen auf die Metadaten, indem Sie http://localhost/ServiceModelSamples/service.svc?wsdl anzeigen.Also observe the impact on the metadata by viewing http://localhost/ServiceModelSamples/service.svc?wsdl. Die Metadaten für Dienste sind normalerweise in mehrere Seiten untergeteilt.The metadata for services is typically broken up into multiple pages. Die wsdl-Hauptseite enthält die WSDL-Bindungen, zeigen Sie jedoch http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 an, um die Nachrichtendefinitionen zu betrachten.The main wsdl page contains the WSDL bindings, but view http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 to observe the message definitions.

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Stellen Sie sicher, dass Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Erstellen Sie zum Protokollieren von Nachrichten das Verzeichnis C:\LOGS.Create a C:\LOGS directory for logging messages. Weisen Sie dem Benutzer Network Service die Schreibberechtigung für dieses Verzeichnis zu.Give the user Network Service write permissions for this directory.

  3. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  4. Um das Beispiel in einer einzelnen oder computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen Ausführen der Windows Communication Foundation-Beispiele.To run the sample in a single- or cross-machine configuration, follow the instructions in Running the Windows Communication Foundation Samples.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) - und WFWF -Beispiele herunterzuladen.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Contract\Message\UseAndStyle

Siehe auchSee Also