2009-02-10 7 views
10

He creado el servicio WCF predeterminado en VS2008. Se llama "Servicio1"WCF consumido como WebService agrega un parámetro booleano?

public class Service1 : IService1 
{ 
    public string GetData(int value) 
    { 
     return string.Format("You entered: {0}", value); 
    } 

    public CompositeType GetDataUsingDataContract(CompositeType composite) 
    { 
     if (composite.BoolValue) 
     { 
      composite.StringValue += "Suffix"; 
     } 
     return composite; 
    } 
} 

Funciona bien, la interfaz es IService1:

[ServiceContract] 
public interface IService1 
{ 

    [OperationContract] 
    string GetData(int value); 

    [OperationContract] 
    CompositeType GetDataUsingDataContract(CompositeType composite); 

    // TODO: Add your service operations here 
} 

Esto es todo por defecto; Visual Studio 2008 creó todo esto.

Luego creé una aplicación Winforms simple para "probar" esto. Agregué la referencia de servicio a mi servicio mencionado anteriormente y todo funciona. Puedo instanciar y llamar a myservice1.GetData (100); y obtengo el resultado

Pero me dijeron que este servicio tendría que ser consumido por una aplicación Winforms .NET 2.0 a través de los Servicios web, así que procedí a agregar la referencia a una nueva aplicación Winforms .NET 2.0 creada desde cero (solo un winform llamado formulario 1). Esta vez, al agregar la "referencia web", agregó el típico "localhost" que pertenece a los servicios web; el asistente vio el Servicio WCF (ejecutándose en segundo plano) y lo agregó.

Cuando traté de consumir esto, descubrí que el método GetData (int), ahora era GetData (int, bool).

Aquí está el código

private void button1_Click(object sender, EventArgs e) 
    { 
     localhost.Service1 s1 = new WindowsFormsApplication2.localhost.Service1(); 
     Console.WriteLine(s1.GetData(100, false)); 
    } 

Aviso lo falso en la llamada GetData?

No sé cuál es ese parámetro o de dónde vino eso, se llama "bool valueSpecified".

¿Alguien sabe de dónde viene esto? ¿Algo más que debería hacer para consumir un servicio de WCF como un servicio web de .NET 2.0? (formas de ganar).

Respuesta

11

Bien bien ... aparentemente here's la respuesta y posibles soluciones o soluciones.

+0

Igual advertencia que la serialización de XML :) – leppie

+0

Si pudiera volver a votar su respuesta y preguntar nuevamente, lo haría. Pasé 2 horas preguntándome por qué estaba obteniendo versiones de parámetros "no arregladas" que estaba configurando y pasando a un servicio de .NET 2.0 a un servicio .NET 4 WCF. He visto estos booleanos arbitrarios y no he pensado en ellos. Gracias v.mucho! – SpaceBison

+0

@SpaceBison - upvoted para usted :) – Frozenskys

Cuestiones relacionadas