Trasformazione Xslt
salvod non è online. Ultima attività: 30/05/2008 16.52.44salvod
Inserito il: 19 maggio 2008 20.27
7 messaggi dal 22 lug 2002 Istalla Microsoft Silverlight!
tra i metodi di un webservice che ho creato, uno di questi preso un xml effettua una trasformazione xslt in un secondo xml. in locale funziona perfettamente, ma quando lo sposto sul server in hosting va in errore, vi posto lo stacktrace:
at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Object assemblyOrString, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at System.Security.CodeAccessSecurityEngine.CheckSetHelper(PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandle rmh, Object assemblyOrString, SecurityAction action, Boolean throwException)
at System.Security.CodeAccessSecurityEngine.CheckSetHelper(CompressedStack cs, PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandle rmh, Assembly asm, SecurityAction action)
at TravelFinder.WebServices.XmlTransformUtility.TraslateXml(XmlNode root, String xslPath, Object extension)
at TravelFinder.WebServices.XmlTransformUtility.ExecTransformation(String xmlContent, String xslPath)
at TravelFinder.WebServices.Offerte.GetOfferteByStrutturaId(Int32 strutturaID)


grazie a tutti

ps: il sito è hostato su aruba

Microsoft Most Valuable Professional
Re: Trasformazione Xslt
Daniele Bochicchio non è online. Ultima attività: 07/08/2008 16.37.53Daniele Bochicchio
Inserito il: 20 maggio 2008 19.32
contributi / Top Poster / Community manager / daniele.aspitalia.com / Blog / 9511 messaggi dal 31 ago 1998 Istalla Microsoft Silverlight!
salvod wrote:
ps: il sito è hostato su aruba

è un problema di CAS. vedi
http://blogs.aspitalia.com/daniele/post1667/ASP.NET-2.0-AllowPartiallyTrustedCallers-Medium-Trust.aspx

Daniele Bochicchio

ASP.NET
.NET Framework
LINQ
Silverlight
Re: Trasformazione Xslt
salvod non è online. Ultima attività: 30/05/2008 16.52.44salvod
Inserito il: 21 maggio 2008 17.33
7 messaggi dal 22 lug 2002 Istalla Microsoft Silverlight!
avevo già aggiunto all'assemblyInfo l'attributo ma continua ad alzarmi quell'eccezione

Modificato da salvod il 21 maggio 2008 17.35 -

Microsoft Most Valuable Professional
Re: Trasformazione Xslt
Daniele Bochicchio non è online. Ultima attività: 07/08/2008 16.37.53Daniele Bochicchio
Inserito il: 21 maggio 2008 17.46
contributi / Top Poster / Community manager / daniele.aspitalia.com / Blog / 9511 messaggi dal 31 ago 1998 Istalla Microsoft Silverlight!
salvod wrote:
avevo già aggiunto all'assemblyInfo l'attributo ma continua ad alzarmi quell'eccezione

dipende cosa cerca di fare, dovresti abilitare il debug e dirmi esattamente quale classe utilizzi, perchè il medium trust ha alcune cose a cui bisogna stare attenti:
http://msdn.microsoft.com/en-us/library/ms998341.aspx

Daniele Bochicchio

ASP.NET
.NET Framework
LINQ
Silverlight
Re: Trasformazione Xslt
salvod non è online. Ultima attività: 30/05/2008 16.52.44salvod
Inserito il: 21 maggio 2008 18.03
7 messaggi dal 22 lug 2002 Istalla Microsoft Silverlight!
ora sono a lavoro, + tardi appena arrivo a casa posto il codice delle classi e abilito il debug

Re: Trasformazione Xslt
salvod non è online. Ultima attività: 30/05/2008 16.52.44salvod
Inserito il: 21 maggio 2008 19.53
7 messaggi dal 22 lug 2002 Istalla Microsoft Silverlight!

<Error>
<StackTrace>
at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Object assemblyOrString, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at System.Security.CodeAccessSecurityEngine.CheckSetHelper(PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandle rmh, Object assemblyOrString, SecurityAction action, Boolean throwException)
at System.Security.CodeAccessSecurityEngine.CheckSetHelper(CompressedStack cs, PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandle rmh, Assembly asm, SecurityAction action)
at TravelFinder.WebServices.XmlTransformUtility.TraslateXml(XmlNode root, String xslPath, Object extension)
at TravelFinder.WebServices.XmlTransformUtility.ExecTransformation(String xmlContent, String xslPath) in C:\Users\didsal00\Documents\Visual Studio 2005\Projects\TravelFinder.WebServices\TravelFinder.WebServices\XmlTransformUtility.cs:line 159
at TravelFinder.WebServices.Offerte.GetOfferteByStrutturaId(Int32 strutturaID) in C:\Users\didsal00\Documents\Visual Studio 2005\Projects\TravelFinder.WebServices\TravelFinder.WebServices\Offerte.asmx.cs:line 45
</StackTrace>
<Message>Request failed.</Message>
</Error>


riga 159: string xmlOutput = XmlTransformUtility.TraslateXml(root, xslPath, new XslUtilityLista());


/// <summary>
/// Classe per la trasformazione di un file xml tramite un xsl
/// </summary>
/// <param name="root"> Nodo root del documento</param>
/// <param name="xslPath"> Path del file xsl</param>
/// <param name="extension"> Eventuale classe contenente le funzioni user utilizzate nel file xsl</param>
/// <returns></returns>
public static string TraslateXml(XmlNode root, string xslPath, object extension)
{
try
{
XsltArgumentList xsltArgument = new XsltArgumentList();
if (extension != null)
xsltArgument.AddExtensionObject("urn:utility", extension);


XslCompiledTransform objXslCompiledTransform = new XslCompiledTransform();
XsltSettings objXsltSettings = new XsltSettings(true, true);


objXslCompiledTransform.Load(xslPath, objXsltSettings, null);


StringWriter objStringWriter = new StringWriter();

XmlReader reader = new XmlNodeReader(root);
objXslCompiledTransform.Transform(reader, xsltArgument, new XmlTextWriter(objStringWriter));

objXslCompiledTransform.TemporaryFiles.Delete();
return objStringWriter.ToString();
}
catch (Exception ex)
{
string xmlErr = "<Error>";
xmlErr += "<StackTrace><![CDATA[";
xmlErr += ex.StackTrace;
xmlErr += "]]></StackTrace>";
xmlErr += "<Message><![CDATA[";
xmlErr += ex.Message;
xmlErr += "]]></Message>";
xmlErr += "</Error>";

return xmlErr;
}
}


classe per le user function usate nell'xsl
/// <summary>
/// Classe di supporto per la trasformazione xslt
/// </summary>
public class XslUtilityLista
{
public XslUtilityLista()
{
}



public bool[] GetDaySelected(int selected) {
int resto = selected;
int i = 6;
bool[] result = new bool[i+1];

while(resto > 0 && i >= 0) {
if(resto%2==0)
result[i--] = false;
else
result[i--] = true;

resto = resto / 2;
}

while(i >= 0)
result[i--] = false;

return result;
}



public string GetDatePartenza(string strDateParStart, string strDateParEnd, string strPeriodSelect) {
//RICAVO TUTTE LE DATE DI PARTENZA

DateTime dateToday = DateTime.Now;
DateTime datePartStart = new DateTime(Convert.ToInt32(strDateParStart.Substring(0, 4)), Convert.ToInt32(strDateParStart.Substring(4, 2)), Convert.ToInt32(strDateParStart.Substring(6, 2)));
DateTime datePartEnd = new DateTime(Convert.ToInt32(strDateParEnd.Substring(0, 4)), Convert.ToInt32(strDateParEnd.Substring(4, 2)), Convert.ToInt32(strDateParEnd.Substring(6, 2)));

int periodSelect = Convert.ToInt32(strPeriodSelect);

string datePar = "";

bool[] daySelected = GetDaySelected(periodSelect);
int dateDiff = datePartEnd.Subtract(datePartStart).Days;

for(int j = 0; j <= dateDiff; j++)
{

DateTime dateCurr = datePartStart.AddDays(Convert.ToDouble(j));
int day = ((int)dateCurr.DayOfWeek - 1);

if(day < 0)
day = 6;

if(daySelected[day] && dateCurr.CompareTo(dateToday) > 0) {
if(datePar != "")
datePar += "|";
datePar += dateCurr.ToString("yyyyMMdd");
}
}

return datePar;

}
}


file xsl:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:utility">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:template match="ListOfferte">
<xsl:element name="ListOfferte">
<xsl:for-each select="//Offerta">
<xsl:element name="Offerta">
<xsl:element name="OffertaID">
<xsl:value-of select="offertaID"></xsl:value-of>
</xsl:element>
<xsl:element name="TourOperatorID">
<xsl:value-of select="tourOperatorID"></xsl:value-of>
</xsl:element>
<xsl:element name="StrutturaID">
<xsl:value-of select="tourOperatorID"></xsl:value-of>
</xsl:element>
<xsl:element name="Classificazione">
<xsl:value-of select="classificazione"></xsl:value-of>
</xsl:element>
<xsl:element name="Tipologia">
<xsl:value-of select="tipologia"></xsl:value-of>
</xsl:element>
<xsl:element name="Trattamento">
<xsl:value-of select="trattamento"></xsl:value-of>
</xsl:element>
<xsl:element name="Descrizione">
<xsl:value-of select="descrizione"></xsl:value-of>
</xsl:element>
<xsl:element name="Giorni">
<xsl:value-of select="giorni"></xsl:value-of>
</xsl:element>
<xsl:element name="Notti">
<xsl:value-of select="notti"></xsl:value-of>
</xsl:element>
<xsl:element name="DatePartenza">
<xsl:call-template name="datePart-tokens">
<xsl:with-param name="datePart">
<xsl:value-of select="concat(user:GetDatePartenza(concat(dataParStart,''), concat(dataParEnd,''), concat(periodSelect,'')), '|')" />
</xsl:with-param>
</xsl:call-template>
</xsl:element>
<xsl:element name="LuoghiPartenza">
<xsl:call-template name="luoghiPart-tokens">
<xsl:with-param name="luoghi">
<xsl:value-of select="concat(luogoPar, '|')" />
</xsl:with-param>
</xsl:call-template>
</xsl:element>
<xsl:element name="Notti">
<xsl:value-of select="notti"></xsl:value-of>
</xsl:element>
<xsl:element name="PrezzoCatalogo">
<xsl:value-of select="prezzoCatalogo"></xsl:value-of>
</xsl:element>
<xsl:element name="Prezzo">
<xsl:value-of select="prezzo"></xsl:value-of>
</xsl:element>
<xsl:element name="DataPubblicazione">
<xsl:value-of select="data"></xsl:value-of>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template name="luoghiPart-tokens">
<xsl:param name="luoghi" />
<xsl:variable name="first" select="substring-before($luoghi, '|')" />
<xsl:variable name="remaining" select="substring-after($luoghi, '|')" />
<xsl:element name="Luogo">
<xsl:value-of select="$first" />
</xsl:element>
<xsl:if test="$remaining">
<xsl:call-template name="luoghiPart-tokens">
<xsl:with-param name="luoghi" select="$remaining" />
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="datePart-tokens">
<xsl:param name="datePart" />
<xsl:variable name="first" select="substring-before($datePart, '|')" />
<xsl:variable name="remaining" select="substring-after($datePart, '|')" />
<xsl:element name="Data">
<xsl:value-of select="$first" />
</xsl:element>
<xsl:if test="$remaining">
<xsl:call-template name="datePart-tokens">
<xsl:with-param name="datePart" select="$remaining" />
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

Microsoft Most Valuable Professional
Re: Trasformazione Xslt
Daniele Bochicchio non è online. Ultima attività: 07/08/2008 16.37.53Daniele Bochicchio
Inserito il: 22 maggio 2008 09.21
contributi / Top Poster / Community manager / daniele.aspitalia.com / Blog / 9511 messaggi dal 31 ago 1998 Istalla Microsoft Silverlight!
salvod wrote:
riga 159: string xmlOutput = XmlTransformUtility.TraslateXml(root, xslPath, new XslUtilityLista());

come passi i path? in medium trust non puoi assolutamente passarli relativi, devono sempre essere assoluti.

Daniele Bochicchio

ASP.NET
.NET Framework
LINQ
Silverlight
Re: Trasformazione Xslt
salvod non è online. Ultima attività: 30/05/2008 16.52.44salvod
Inserito il: 22 maggio 2008 10.14
7 messaggi dal 22 lug 2002 Istalla Microsoft Silverlight!
la passo assoluta :(
string xmlResult = XmlTransformUtility.ExecTransformation(sr.ReadToEnd(), Server.MapPath("~/XslFiles/Lista.OffertaByStrutturaID.xsl"));

public static string ExecTransformation(string xmlContent, string xslPath)
{
System.Xml.XmlDocument domXmlInput = new System.Xml.XmlDocument();
domXmlInput.LoadXml(xmlContent);

XmlNode root = domXmlInput.ChildNodes[0];

string xmlOutput = XmlTransformUtility.TraslateXml(root, xslPath, new XslUtilityLista());

return xmlOutput;
}


Modificato da salvod il 22 maggio 2008 10.16 -



Pagine: [1] 2 Avanti >>
Vai a:
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.


fabrica - 521 pt
vladimiro - 510 pt
stefanomnn - 242 pt

Ultimi vincitori: PeppeDotNet, fabrica, vladimiro

Iscriviti anche tu e raccogli punti. Questo mese in palio VS 2008 + Windows Server 2008, ReShaper e 1 ebook!



COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums