Sto costruendo un WCF in C# e un client per consumarlo allo stesso tempo. Per qualche motivo ho problemi a trovare un metodo per restituire un int. Qui è il mio contratto:WCF non restituirà un int
[ServiceContract]
public interface IMData
{
[OperationContract]
int ReturnAnInt();
[OperationContract]
String HelloWorld();
}
Qui è dove ho implementato:
public class MData : IMData
{
public String HelloWorld()
{
return "Hello World";
}
public int ReturnAnInt()
{
return 5;
}
}
sto usando Visual Studio, e per il cliente, ho importato questo WCF come un riferimento Web. Ora per qualche motivo quando dichiaro un'istanza di MData e provo a chiamare HelloWorld, non c'è alcun problema, ma ricevo un errore di compilazione quando si chiama ReturnAnInt.
MData m = new MData();
String helloWorld = m.HelloWorld();
int result = m.ReturnAnInt();
L'errore che ottengo con ReturnAnInt è: "No sovraccarico per il metodo 'ReturnAnInt' prende 0 argomenti" Allora ho mouse sopra per vedere cosa di Visual Studio si aspetta, e si dice che il metodo dovrebbe apparire come:
void MData.ReturnAnInt(out int ReturnAnIntResult, out bool ReturnAnIntResultSpecified)
ho sbattere la testa contro un muro su questo per ore e che riesco a trovare nulla su Google, e ha la mia colleghi sconcertato pure. Perché ha aggiunto due parametri che non rientrano nella definizione e cambia il tipo di ritorno? Qualsiasi aiuto sarebbe molto apprezzato. Mi scuso se ho omesso qualsiasi informazione che potrebbe essere utile.
Vuol WCF davvero sostenere una 'parametri esterno ne? – abatishchev
Sì, ma non è proprio quello di cui si tratta. Il problema descritto nella domanda è che il codice C# di WCF non specifica i parametri 'out' o' int's opzionali, ma questo è il modo in cui il generatore di codice Web References lo crea. Questo funziona. Tuttavia, è possibile definire un servizio WCF come "int ReturnAnInt (out int otherInt);" che funziona e può essere utilizzato sia come riferimento del servizio che come riferimento Web. Il WSDL generato è semplicemente un oggetto di risposta con più elementi, quindi dovrebbe generare qualcosa utilizzabile anche in altri linguaggi client. –
Grazie a tutti per le vostre risposte, sono stati molto utili! L'ho importato come riferimento di servizio e il mio problema è stato risolto :) –