How to: Export Metadata from Service Endpoints
This topic explains how to export metadata from service endpoints.
To export metadata from service endpoints
Create a new Visual Studio Console App Project. Add the code shown in the following steps in the generated Program.cs file within the main() method.
Create a WsdlExporter.
Dim exporter As New WsdlExporter()
WsdlExporter exporter = new WsdlExporter();
Set the PolicyVersion property to one of the values from the PolicyVersion enumeration. This sample sets the value to Policy15 which corresponds to WS-Policy 1.5.
exporter.PolicyVersion = PolicyVersion.Policy15
exporter.PolicyVersion = PolicyVersion.Policy15;
Create an array of ServiceEndpoint objects.
Dim myServiceEndpoints() As ServiceEndpoint = New ServiceEndpoint(1) {} Dim myDescription As New ContractDescription("myContract") myServiceEndpoints(0) = New ServiceEndpoint(myDescription, New BasicHttpBinding(), New EndpointAddress("https://localhost/myservice")) myServiceEndpoints(1) = New ServiceEndpoint(myDescription, New BasicHttpBinding(), New EndpointAddress("https://localhost/myservice"))
ServiceEndpoint [] myServiceEndpoints = new ServiceEndpoint[2]; ContractDescription myDescription = new ContractDescription ("myContract"); myServiceEndpoints[0] = new ServiceEndpoint(myDescription,new BasicHttpBinding(),new EndpointAddress("https://localhost/myservice")); myServiceEndpoints[1] = new ServiceEndpoint(myDescription,new BasicHttpBinding(),new EndpointAddress("https://localhost/myservice"));
Export metadata for each service endpoint.
'Export all endpoints for each endpoint in collection. For Each endpoint As ServiceEndpoint In myServiceEndpoints exporter.ExportEndpoint(endpoint) Next
// Export all endpoints for each endpoint in collection. foreach (ServiceEndpoint endpoint in myServiceEndpoints) { exporter.ExportEndpoint(endpoint); }
Check to make sure no errors occurred during the export process and retrieve the metadata.
'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
// If there are no errors, get the documents. MetadataSet metadataDocs = null; if (exporter.Errors.Count != 0) { metadataDocs = exporter.GetGeneratedMetadata(); }
You can now use the metadata, such as write it to a file by calling the WriteTo method.
Example
The following is the full code listing for this example.
Imports System
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("https://localhost/myservice"))
myServiceEndpoints(1) = New ServiceEndpoint(myDescription, New BasicHttpBinding(), New EndpointAddress("https://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
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("https://localhost/myservice"));
myServiceEndpoints[1] = new ServiceEndpoint(myDescription,new BasicHttpBinding(),new EndpointAddress("https://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();
}
}
}
}
Compiling the Code
When compiling Program.cs reference System.ServiceModel.dll.
See Also
Concepts
Metadata Architecture Overview
Using Metadata
Windows Communication Foundation Endpoints: Addresses, Bindings, and Contracts
© 2007 Microsoft Corporation. All rights reserved.
Build Date: 2009-08-07