2 messaggi dal 10 marzo 2006
Buongiorno a tutti,

sto muovendo i primi passi su WCF e vorrei chiedervi un aiuto per risolvere un problema.

Ho creato una classe personalizzata ed un interfaccia, quando provo ad eseguire un metodo della mia classe personalizzata da un consumer il compiltore mi ritorna il seguente errore -->The underlying connection was closed: The connection was closed unexpectedly

Contratto:
[ServiceContract]
public interface ICategoria2
{
[OperationContract]
int Add();
[OperationContract]
System.Collections.Generic.List<Interface.ICategoria2> getList();
[OperationContract]
int Remove();
[OperationContract]
System.Collections.Generic.List<int> GetTest();

[DataMember]
string Descrizione { get; set; }
[DataMember]
string Nome { get; set; }

Servizio:
public class Categoria2:Interface.ICategoria2
{


public Categoria2()
{
}

public Categoria2(string nome,string descrizione)
{
}
public Categoria2(string nome)
{
}

#region ICategoria Members

public int Add()
{
throw new NotImplementedException();
}

public System.Collections.Generic.List<ForboFramework.BLL.CQ.Prodotto.Interface.ICategoria2> getList()
{
System.Collections.Generic.List<ForboFramework.BLL.CQ.Prodotto.Interface.ICategoria2> ritorno = new System.Collections.Generic.List<ForboFramework.BLL.CQ.Prodotto.Interface.ICategoria2>();
ritorno.Add(new Categoria2());
return ritorno;
}

public int Remove()
{
throw new NotImplementedException();
}

public System.Collections.Generic.List<int> GetTest()
{
System.Collections.Generic.List<int> itest = new System.Collections.Generic.List<int>();
itest.Add(10);
return itest;
}

public string Descrizione
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}

public string Nome
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}

#endregion
}

L'errore viene generato dal metodo getList()

end point consumer
<endpoint address="http://localhost:8082/ForboFramework/Prodotto/Categoria"
binding="wsHttpBinding" contract="ForboFramework.BLL.Prodotto.ICategoria"
name="ProdottoCategoriaChannel" />

behavior Servizio:
<service behaviorConfiguration="ForboFramework.BLL.CQ.Prodotto.Categoria2Beavior" name="ForboFramework.BLL.CQ.Prodotto.Categoria2">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8085/ForboFramework/Prodotto/Categoria2" />
</baseAddresses>
</host>
<endpoint name="Categoria2" address="" binding="wsHttpBinding" contract="ForboFramework.BLL.CQ.Prodotto.Interface.ICategoria2">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>

Potreste cortesemente aiutarmi a costruire un servizio WCF che restituisce una classe personalizzata?

Grazie a tutti della collaborazione e buona giornata

Jerry
Ciao,

da ciò che vedo stai sbagliando un po' approccio: quando vuoi restituire un tipo personalizzato, ti è sufficiente creare una classe, decorarla con gli attributi DataContract e DataMember e restituirla (o accettarla come argomento) in uno dei tuoi metodi.

Tu invece hai decorato con questi attributi la stessa classe del servizio e ne stai restituendo l'istanza.. ora, non so se questo sia l'origine del tuo problema, magari no, però ti conviene sin da ora percorrere la strada corretta. Allo scopo ti segnalo questo ottimo articolo di Stefano.
http://www.winfxitalia.com/articoli/communication_foundation/introduzione.aspx

a presto,
m.
2 messaggi dal 10 marzo 2006
Grazie 1000 Cradle,

penso di aver trovato l'errore.

Ho creato una mia classe Categoria (DataContract) con i suoi metodi e propietà ed un altra classe CollectionCategoria che eredita da un interfaccia iCollectionCategoria (SeriviceContract) i metodi da implementare... da un primo debug sembra funzionare. A livello di concetto (design) secondo te potrebbe andare bene?


Grazie ancora della tua collaborazione

Jerry
Direi di sì, non mi piace molto il naming, nel senso che più che una collection si tratta di un servizio.

A presto,
m.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.