Procedimiento para exportar metadatos desde puntos de conexión de servicio
En este tema se explica cómo exportar los metadatos desde los extremos de servicio.
Exportar metadatos desde puntos de conexión de servicio
Cree un nuevo Proyecto App de Consola de Visual Studio. Agregue el código que se muestra en los pasos siguientes en el archivo Program.cs generado dentro del método main().
Crear un control WsdlExporter.
WsdlExporter exporter = new WsdlExporter();
Dim exporter As New WsdlExporter()
Establezca la propiedad PolicyVersion en uno de los valores de enumeración desde PolicyVersion. Este ejemplo establece el valor en Policy15 que corresponde a WS-Policy 1.5.
exporter.PolicyVersion = PolicyVersion.Policy15;
exporter.PolicyVersion = PolicyVersion.Policy15
Cree una matriz de objetos ServiceEndpoint.
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"))
Exporte los metadatos para cada punto de conexión de servicio.
// 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
Compruebe para asegurarse de que no se produjo ningún error durante el proceso de exportación y recupere los metadatos.
// 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
Ahora puede utilizar los metadatos, de manera que puede escribirlos en un archivo llamando al método WriteTo(XmlWriter).
Ejemplo
A continuación, se muestra una lista de código completa para este ejemplo.
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
Compilar el código
Al compilar Program.cs, haga referencia a System.ServiceModel.dll.