Vorgehensweise: Exportieren von Metadaten aus Dienstendpunkten
In diesem Thema wird erklärt, wie Sie Metadaten aus Dienstendpunkten exportieren.
So exportieren Sie Metadaten aus Dienstendpunkten
Erstellen Sie ein neues Visual Studio-Konsolenanwendungsprojekt. Fügen Sie den in den folgenden Schritten gezeigten Code der erzeugten Datei "Program.cs" innerhalb der main()-Methode hinzu.
Erstellen Sie eine WsdlExporter.
WsdlExporter exporter = new WsdlExporter();
Dim exporter As New WsdlExporter()
Legen Sie die PolicyVersion-Eigenschaft auf einen der PolicyVersion-Enumerationswerte fest. In diesem Beispiel wird der Wert auf Policy15 festgelegt. Dies entspricht der WS-Richtlinie 1.5.
exporter.PolicyVersion = PolicyVersion.Policy15;
exporter.PolicyVersion = PolicyVersion.Policy15
Erstellen Sie ein Array mit ServiceEndpoint-Objekten.
ServiceEndpoint [] myServiceEndpoints = new ServiceEndpoint[2]; ContractDescription myDescription = new ContractDescription ("myContract"); myServiceEndpoints[0] = new ServiceEndpoint(myDescription,new BasicHttpBinding(),new EndpointAddress("http://localhost/myservice")); myServiceEndpoints[1] = new ServiceEndpoint(myDescription,new BasicHttpBinding(),new EndpointAddress("http://localhost/myservice"));
Dim myServiceEndpoints() As ServiceEndpoint = New ServiceEndpoint(1) {} Dim myDescription As New ContractDescription("myContract") myServiceEndpoints(0) = New ServiceEndpoint(myDescription, New BasicHttpBinding(), New EndpointAddress("http://localhost/myservice")) myServiceEndpoints(1) = New ServiceEndpoint(myDescription, New BasicHttpBinding(), New EndpointAddress("http://localhost/myservice"))
Exportieren Sie Metadaten für jeden Dienstendpunkt.
// Export all endpoints for each endpoint in collection. foreach (ServiceEndpoint endpoint in myServiceEndpoints) { exporter.ExportEndpoint(endpoint); }
'Export all endpoints for each endpoint in collection. For Each endpoint As ServiceEndpoint In myServiceEndpoints exporter.ExportEndpoint(endpoint) Next
Stellen Sie sicher, dass während des Exportprozesses keine Fehler aufgetreten sind, und rufen Sie die Metadaten ab.
// If there are no errors, get the documents. MetadataSet metadataDocs = null; if (exporter.Errors.Count != 0) { metadataDocs = exporter.GetGeneratedMetadata(); }
'If there are no errors, get the documents. Dim metadataDocs As MetadataSet metadataDocs = Nothing If (exporter.Errors.Count = 0) Then metadataDocs = exporter.GetGeneratedMetadata() End If
Sie können die Metadaten jetzt verwenden, beispielsweise indem Sie sie mithilfe eines Aufrufs der WriteTo(XmlWriter)-Methode in eine Datei schreiben.
Beispiel
Unten ist die vollständige Codeauflistung für dieses Beispiel angegeben.
using System;
using System.ServiceModel;
using System.ServiceModel.Description;
namespace WsdlExporterSample
{
class Program
{
static void Main(string[] args)
{
WsdlExporter exporter = new WsdlExporter();
exporter.PolicyVersion = PolicyVersion.Policy15;
ServiceEndpoint [] myServiceEndpoints = new ServiceEndpoint[2];
ContractDescription myDescription = new ContractDescription ("myContract");
myServiceEndpoints[0] = new ServiceEndpoint(myDescription,new BasicHttpBinding(),new EndpointAddress("http://localhost/myservice"));
myServiceEndpoints[1] = new ServiceEndpoint(myDescription,new BasicHttpBinding(),new EndpointAddress("http://localhost/myservice"));
// Export all endpoints for each endpoint in collection.
foreach (ServiceEndpoint endpoint in myServiceEndpoints)
{
exporter.ExportEndpoint(endpoint);
}
// If there are no errors, get the documents.
MetadataSet metadataDocs = null;
if (exporter.Errors.Count != 0)
{
metadataDocs = exporter.GetGeneratedMetadata();
}
}
}
}
Imports System.ServiceModel
Imports System.ServiceModel.Description
Module Module1
Sub Main()
Dim exporter As New WsdlExporter()
exporter.PolicyVersion = PolicyVersion.Policy15
Dim myServiceEndpoints() As ServiceEndpoint = New ServiceEndpoint(1) {}
Dim myDescription As New ContractDescription("myContract")
myServiceEndpoints(0) = New ServiceEndpoint(myDescription, New BasicHttpBinding(), New EndpointAddress("http://localhost/myservice"))
myServiceEndpoints(1) = New ServiceEndpoint(myDescription, New BasicHttpBinding(), New EndpointAddress("http://localhost/myservice"))
'Export all endpoints for each endpoint in collection.
For Each endpoint As ServiceEndpoint In myServiceEndpoints
exporter.ExportEndpoint(endpoint)
Next
'If there are no errors, get the documents.
Dim metadataDocs As MetadataSet
metadataDocs = Nothing
If (exporter.Errors.Count = 0) Then
metadataDocs = exporter.GetGeneratedMetadata()
End If
End Sub
End Module
Kompilieren des Codes
Verweisen Sie beim Kompilieren der Datei "Program.cs" auf "System.ServiceModel.dll".