224 messaggi dal 25 novembre 2001
Ho implementato un WebService che restituisce delle classi serializzate, in modo che il metodo chiamato restituisca un XmlDocument.
Restituisce un XML in modo indolore.
Ho quindi implementato una WebApplication dove una pagina aspx, istanziando la classe della WebReference chiama il servizio web.
Volendo riconvertire l'xml in una collezzione di classi mi sono posto anche il problema di popolare un list.

ecco il codice che uso nella load della pagina chiamante:

ServiceReference2.WsTestSoapClient lista1 = new ServiceReference2.WsTestSoapClient();

XmlDocument doc = new XmlDocument();
XmlReader xmlReader;
using (Stream s = GenerateStreamFromString(sxml))
{
xmlReader = XmlReader.Create(s, new XmlReaderSettings());
doc.Load(xmlReader);
}


ListaConferenze = Convertors.XmlToObjectList<Conferenza>(sxml, "//ListaConferenze/Conferenza");

GridView1.DataSource = ListaConferenze;
GridView1.DataBind();



fuori dalla load ho:

private List<Conferenza> _listaConferenze;
public List<Conferenza> ListaConferenze
{
get { return _listaConferenze; }
set { _listaConferenze = value; }
}

public Stream GenerateStreamFromString(string s)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}

public T XmlToObject<T>(string xml)
{
using (var xmlStream = new StringReader(xml))
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(XmlReader.Create(xmlStream));
}
}

public List<T> XmlToObjectList<T>(string xml, string nodePath)
{
var xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);

var returnItemsList = new List<T>();

foreach (XmlNode xmlNode in xmlDocument.SelectNodes(nodePath))
{
returnItemsList.Add(XmlToObject<T>(xmlNode.OuterXml));
}
return returnItemsList;
}

In locale funziona tutto benissimo, sia chiamando il WS in locale sia chiamandone la versione in produzione.
Nel momento in cui metto in produzione la pagina aspx chiamante ottengo questo errore, che fare?

*************

Server Error in '/' Application.
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.

Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[SecurityException: Request for the permission of type 'System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) +31
System.Security.CodeAccessPermission.Demand() +46
System.Reflection.Emit.DynamicMethod.PerformSecurityCheck(Module m, StackCrawlMark& stackMark, Boolean skipVisibility) +248
System.Reflection.Emit.DynamicMethod..ctor(String name, Type returnType, Type[] parameterTypes, Module m, Boolean skipVisibility) +49
System.Runtime.Serialization.CodeGenerator.BeginMethod(Type returnType, String methodName, Type[] argTypes, Boolean allowPrivateMemberAccess) +53
System.Runtime.Serialization.CodeGenerator.BeginMethod(String methodName, Type delegateType, Boolean allowPrivateMemberAccess) +131
System.Runtime.Serialization.XmlDataContract.GenerateCreateXmlSerializableDelegate() +129
Modificato da usul il 25 settembre 2013 01.36 -

Bye
Usul

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.