studio - Cómo generar un archivo WSDL desde un servicio web C#
wsdl.exe c# (3)
He creado una herramienta que puede generar un archivo WSDL a partir de un ensamblado c # compilado (dll) que contiene uno o más servicios web. Normalmente, se requiere un servicio en ejecución (IIS u otro) que hospede el .asmx para que pueda recuperar el WSDL utilizando /MyWebService.asmx?wsdl
Esta herramienta genera un archivo WSDL utilizando la reflexión para recuperar toda la información de un conjunto (dll).
La descarga se puede encontrar en https://github.com/StefH/WSDLGenerator
He creado un servicio web como este:
[WebService(Namespace = "http://ns")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class GroupManagerService : WebService
{
public GroupManagerService()
{
}
[WebMethod]
public bool MyMethod(string loginname, string country)
{
// code here...
}
}
¿Es posible generar un archivo WSDL para este código sin conectarse a un servicio en ejecución? Busqué y encontré información sobre SvcUtil.exe y wsdl.exe , pero solo funcionan cuando se recupera el WSDL de un servicio web en ejecución.
(Para java , hay una herramienta llamada java2wsdl , ¿hay un equivalente para c # ?)
:Actualizar:
El contexto para esta pregunta es que quiero agregar un nuevo CustomWebService a SharePoint que debería implementarse usando WSPBuilder en la carpeta _vti_bin en SharePoint. Véase también mi post en SharePoint.SE.
Y quiero generar automáticamente (usando los comandos msbuild) el ''MyServicewsdl.aspx'' y ''MyServicedisco.wsdl'' que se deben colocar en la carpeta _vti_bin.
Tal vez me estoy perdiendo algunas cosas? La salida de svcutil.exe es:
bin/Debug>SvcUtil.exe MyWebService.dll
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.2152]
Copyright (c) Microsoft Corporation. All rights reserved.
Generating metadata files...
Warning: No metadata files were generated. No service contracts were exported.
To export a service, use the /serviceName option. To export data contracts, spe
cify the /dataContractOnly option. This can sometimes occur in certain security
contexts, such as when the assembly is loaded over a UNC network file share. If
this is the case, try copying the assembly into a trusted environment and runnin
g it.
Svcutil.exe definitivamente generará el WSDL con el servicio inactivo. El uso correcto es svcutil your.executable.dll (exe). Lo estoy usando mucho, así que estoy seguro de que generará el WSDL.
Ver svcutil /?
-= METADATA EXPORT =-
Description: svcutil.exe can export metadata for services, contracts and data types in compiled assemblies. To
export metadata for a service, you must use the /serviceName option to indicate the service you would like
to export. To export all Data Contract types within an assembly use the /dataContractOnly option. By
default metadata is exported for all Service Contracts in the input assemblies.
Syntax: svcutil.exe [/t:metadata] [/serviceName:<serviceConfigName>] [/dataContractOnly] <assemblyPath>*
<assemblyPath> - The path to an assembly that contains services, contracts or Data Contract types to be
exported. Standard command-line wildcards can be used to provide multiple files as input.
Options:
/serviceName:<serviceConfigName> - The config name of a service to export. If this option is used, an
executable assembly with an associated config file must be passed as
input. Svcutil will search through all associated config files for the
service configuration. If the config files contain any extension types,
the assemblies containing these types must either be in the GAC or
explicitly provided using the /r option.
/reference:<file path> - Add the specified assembly to the set of assemblies used for resolving
type references. If you are exporting or validating a service that uses
3rd-party extensions (Behaviors, Bindings and BindingElements) registered
in config use this option to locate extension assemblies that are not in
the GAC. (Short Form: /r)
/dataContractOnly - Operate on Data Contract types only. Service Contracts will not be
processed. (Short Form: /dconly)
/excludeType:<type> - The fully-qualified or assembly-qualified name of a type to exclude from
export. This option can be used when exporting metadata for a service or a
set of service contracts to exclude types from being exported. This option
cannot be used with the /dconly option. (Short Form: /et)