2009-09-08 25 views
36

El cliente me proporcionó el wsdl para generar el servicio web. Pero cuando usé el comando wsdl.exe, generé la clase .cs. Consumí esa clase en mi servicio web y cuando proporcioné el wsdl al cliente no coincidía con su esquema. En realidad, quiero que el .asmx se genere automáticamente desde el wsdl para poder completar el método web. Para que coincida exactamente con su esquema. Espero que tenga sentido.cómo generar servicio web fuera de wsdl

+0

que en realidad también trató wsdl.exe/servidor o/serverinterface todavía está generando la clase Cs. – alice7

Respuesta

4

¿Qué le parece usar los conmutadores wsdl /server o wsdl /serverinterface? Por lo que entiendo las propiedades de la línea de comandos wsdl.exe, eso es lo que estás buscando.

- ADVANCED - 

/servidor

Por otra parte: ¿por qué quiere crear soluciones tecnológicas obsoletas? ¿Por qué no crear este servicio web como un servicio WCF? ¡Esa es la forma actual y más moderna, mucho más flexible de hacer esto!

Marc


ACTUALIZACIÓN:

Cuando uso wsdl /server en un archivo WSDL, consigo este archivo creado:

[WebService(Namespace="http://.......")] 
public abstract partial class OneCrmServiceType : System.Web.Services.WebService 
{ 
    /// <remarks/> 
    [WebMethod] 
    public abstract void OrderCreated(......); 
} 

Esto es básicamente casi exactamente el mismo código eso se genera cuando agrega un archivo ASMX a su solución (en el código detrás del archivo - "yourservice.asmx.cs"). No creo que pueda acercarse más a la creación de un archivo ASMX a partir de un archivo WSDL.

siempre se puede añadir el "yourservice.asmx" de forma manual - en realidad no contiene mucho:

<%@ WebService Language="C#" CodeBehind="YourService.asmx.cs" 
     Class="YourServiceNamespace.YourServiceClass" %> 
+1

NO que en realidad no estoy buscando. Generaría la clase de proxy que no quiero. Quiero generar abc.asmx automáticamente. Y pensé en WCF pero fui simple al hacer un servicio web. – alice7

3

No se puede garantizar que el WSDL generado automáticamente-coincidirá con el WSDL a partir del cual se crea el servicio interfaz.

En su escenario, debe colocar el archivo WSDL en su sitio web en alguna parte, y hacer que los consumidores utilicen esa URL. Debe deshabilitar el protocolo Documentation en web.config para que "? Wsdl" no devuelva un WSDL. Ver <protocols> Element.

Además, tenga en cuenta el primer párrafo de dicho artículo:

Este tema es específico de una tecnología heredada. Los servicios web XML y los clientes del servicio web XML ahora deben crearse usando Windows Communication Foundation (WCF).

60

No hay una solución mágica para lo que está buscando, desafortunadamente. Esto es lo que puede hacer:

  • crear una clase de interfaz usando este comando en el Estudio ventana del símbolo visual:

    wsdl.exe yourFile.wsdl /l:CS /serverInterface
    Uso de VB o CS para el idioma de su elección.Esto creará un nuevo archivo .cs o .vb.

  • Cree un nuevo proyecto de servicio web .NET. Importe el archivo existente en su proyecto: el archivo que se creó en el paso anterior.

  • En el archivo .asmx.cs en Código-Ver, modificar la clase como tal:

 

public class MyWebService : System.Web.Services.WebService, IMyWsdlInterface 
{  
    [WebMethod] 
    public string GetSomeString() 
    { 
     //you'll have to write your own business logic 
     return "Hello SOAP World"; 
    } 
} 
+2

También puede poner/salir: "ruta \ a \ carpeta" para colocar el código generado en una ubicación determinada. – b729sefc

+0

Gracias, gran ayuda –

1

Puede generar las clases WS proxy usando la FUMEC (Web Services Contrato Primera) herramienta de thinktecture.com. Entonces, esencialmente, PUEDES crear servicios web desde wsdl's. Creando el asmx, tal vez no, pero ese es el bit fácil ¿no? Esta herramienta se integra brillantemente en VS2005-8 (nueva versión para 2010/WCF llamada WSCF-blue). Lo he usado mucho y siempre he encontrado que es realmente bueno.

+0

Iba a tener en cuenta esto también, aunque nunca tuve mucha suerte con él (WSCF azul en particular). Tal vez utilicé una versión temprana o algo así. –

1

Esto puede ser muy tarde para responder. Pero podría ser útil a los necesitados: Cómo convertir WSDL para SVC:

  1. Suponiendo que está teniendo .wsdl archivo en la ubicación "E: \" para la facilidad en el acceso aún más.
  2. Prepare el comando para cada archivo .wsdl como: E: \ YourServiceFileName.wsdl
  3. Permisos: Suponiendo que tiene los derechos administrativos para realizar permisos. Abra el directorio: C: \ Archivos de programa (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin
  4. Haga clic derecho para amd64 => Seguridad => Editar => Agregar usuario => Todos o usuario actual => Permitir todos los permisos => DE ACUERDO.
  5. Prepare los Comandos para cada archivo en el editor de texto como: wsdl.exe E: \ YourServiceFileName.wsdl/l: CS/server.
  6. Ahora abra el símbolo del sistema de Visual Studio desde: C: \ Archivos de programa (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ Tools \ Shortcuts \ VS2013 x64 Símbolo del sistema de herramientas nativas.
  7. Ejecutar el comando anterior.
  8. Ir al directorio: C: \ Archivos de programa (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ amd64, donde debe generarse el archivo .CS respectivo.

    9.Mueva el archivo CS generado a la ubicación adecuada.

+0

este es el enfoque más fácil y directo desde la ventana de vs cmd. –

Cuestiones relacionadas