3 messaggi dal 18 aprile 2008
Buongiorno,
sto creando un metodo di un WebService (asmx) che ritorni una classe non direttamente istanziabile dal cliente che utilizza il servizio.

La classe ha 2 attributi, il nome dell'applicativo chiamante e un Guid che identifica il chiamante per la sessione.
Avevo pensato di creare una classe astratta e di implementarla nel livello di Business del WS per valorizzare le 2 proprietà e poi di ritornarla al chiamante, ma quando il chiamante prova a colegarsi al metodo GetMiaClasse ritorna un errore SOAP.

System.ServiceModel.FaultException non è stata gestita
Message="System.Web.Services.Protocols.SoapException: Impossibile elaborare la richiesta. ---> System.InvalidOperationException: Errore durante la generazione del documento XML. ---> System.InvalidOperationException: Tipo BLMioServizio.BL_ManageHideClass imprevisto. Utilizzare l'attributo XmlInclude o SoapInclude per specificare tipi non conosciuti a livello statico.\n in Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write32_Token(String n, String ns, Token o, Boolean isNullable, Boolean needType)\n in Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write159_GetTokenResponse(Object[] p)\n in System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)\n --- Fine dell'analisi dello stack dell'eccezione interna ---\n in System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)\n in System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle)\n in System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)\n in System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)\n in System.Web.Services.Protocols.WebServiceHandler.Invoke()\n --- Fine dell'analisi dello stack dell'eccezione interna ---"
Source="mscorlib"
StackTrace:
Server stack trace:
in System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
in System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
in System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
in System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
in System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
in System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
in TestMioServizio2008.MioServizio.MioServizioServiceSoap.GetHideClass(String AppName)
in TestMioServizio2008.MioServizio.MioServizioServiceSoapClient.GetToken(String AppName) in C:\TestMioServizio2008\TestWsMioServizio2008\Service References\MioServizio\Reference.cs:riga 5138
in TestMioServizio2008.Program.Main(String[] args) in C:\TestMioServizio2008\TestMioServizio2008\Program.cs:riga 13
in System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
in Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
in System.Threading.ThreadHelper.ThreadStart()
InnerException:


Probabilmente sbaglio qualcosa, come posso fare?
Grazie per l'aiuto
la classe è decorata con l'attributo [Serializable] ?
3 messaggi dal 18 aprile 2008
Si, c'è
ha questa struttura.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CommonLayer
{
[Serializable]
public abstract class HiddenClass
{

public string _appName = string.Empty;
public string _canale = string.Empty;

public Guid _identityCode;

public HiddenClass()
{


}

~HiddenClass()
{

}

public override string ToString()
{
return _appName + _identityCode.ToString();
}

public override int GetHashCode()
{
return base.GetHashCode();
}
}
}


e questa è la classe, del business layer, che la valorizza e la restituisce all'asmx, è qui che credo ci sia un errore.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CommonLayer;

namespace BLMioServizio
{
[Serializable]
public class BL_ManageHiddenClass: HiddenClass
{
public BL_ManageHiddenClass()
{

}

public BL_ManageHiddenClass(string AppName)
{
this._appName = AppName;
this._canale = GetCanaleFor(AppName);
this._identityCode = new Guid();
}

public HiddenClass GetHiddenClass()
{
return this;
}

private string GetCanaleFor(string AppName)
{
return "INTERNET";
}
}
}

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.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC