2010-07-29 8 views
1

C'est xslt simple, qui montre l'état de connexion de l'utilisateur actuel. Tout a bien fonctionné sur le serveur de développement, mais une fois que nous avons configuré l'application en production, umbraco.librarty.IsLoggedOn() a commencé à retourner false.Umbraco.Library.IsLoggedOn() ne fonctionne pas de XSLT

application utilise la méthode umbraco.libraty.IsLoggedOn() à partir du code .NET et à partir de là, il renvoie la valeur correcte, mais de xslt ne fonctionne pas.

<xsl:choose> 
    <xsl:when test="umbraco.library:IsLoggedOn() = true()"> 
    You are logged in as 
    <q> 
     <xsl:variable name="user" select="umbraco.library:GetCurrentMember()/@loginName"/> 
     <xsl:value-of select="$user"/> 
    </q>. This is <a href="/profile">your profile</a>. 
    </xsl:when> 
    <xsl:otherwise> 
    You are not logged in. 
    <a href="/registruj-se">Log in</a>. 
    </xsl:otherwise> 
</xsl:choose> 

Pour les développeurs non Umbraco: les contrôles de la fonction library.IsLoggedOn() HttpContext.Current.User et HttpContext.Current.User.Identity.IsAuthenticated pour voir si vous est connecté ou non.

Peut-être qu'il ya un problème avec les cookies et XSLT? Quelqu'un a une idée? Tnx

Répondre

0

Ok, c'est la solution à mon problème.

La session n'a pas été disponible à partir xslt, ni du contrôle ascx qui a essayé d'accéder à la session de codebehind. Notre application utilise 99% de webservice asp.net avec des méthodes marquées avec [WebMethod (EnableSession = true)]. À l'intérieur de ces méthodes, la session était disponible. Cela m'a fait penser que cette session est désactivée sur le site web par défaut.

Après quelques googler, je trouve que je dois ajouter cette propriété dans le fichier web.config:

<system.webServer> 
<modules runAllManagedModulesForAllRequests="true"> 

Apparemment, le machine.config dans notre développement a cette propriété par défaut, et le serveur de production didn 't, il fallait donc le changer dans web.config.

2

changement

<xsl:when test="umbraco.library:IsLoggedOn() = true()"> 

à

<xsl:when test="umbraco.library:IsLoggedOn()"> 
+0

Salut riffnl, TNX pour vous répondre. Initialement c'était juste IsLoggedOn(), puis, je l'ai changé en IsLoggedOn() = test() par recommandation sur le forum d'Umbraco. –

+0

Pouvez-vous ajouter IsLoggedOn() à la sortie comme: pour voir ce que la valeur est en réalité? – riffnl

+0

la valeur réelle était «faux». Cependant, c'était le problème avec la configuration, pas avec xslt. Voir ma réponse ci-dessous. tnx pour l'aide –