Umbraco.Library.IsLoggedOn()无法从XSLT中工作

Umbraco.Library.IsLoggedOn()无法从XSLT中工作,xslt,umbraco,Xslt,Umbraco,这是一个简单的xslt,显示当前用户的登录状态。在development server上一切正常,但一旦我们在生产环境中安装了应用程序,umbraco.libraty.IsLoggedOn()开始总是返回false 应用程序使用.NET代码中的方法umbraco.libraty.IsLoggedOn(),并从中返回正确的值,但从xslt返回不正确的值 <xsl:choose> <xsl:when test="umbraco.library:IsLoggedOn() = t

这是一个简单的xslt,显示当前用户的登录状态。在development server上一切正常,但一旦我们在生产环境中安装了应用程序,umbraco.libraty.IsLoggedOn()开始总是返回false

应用程序使用.NET代码中的方法umbraco.libraty.IsLoggedOn(),并从中返回正确的值,但从xslt返回不正确的值

 <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>

您是以用户身份登录的
.  这是。
您没有登录。
.
对于非umbraco开发人员:library.IsLoggedOn()函数检查HttpContext.Current.User和HttpContext.Current.User.Identity.IsAuthenticated以查看您是否登录

也许这是Cookie和XSLT的问题?有人有线索吗? Tnx变化

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


好的,这是我问题的解决方案

该会话无法从xslt获得,也无法从尝试从codebehind访问会话的ascx控件获得。我们的应用程序99%使用asp.net webservice和标记为[WebMethod(EnableSession=true)]的方法。在这些方法中,会话是可用的。这让我认为,默认情况下,web站点上的会话实际上是禁用的

在谷歌搜索之后,我发现我必须将此属性添加到web.config文件:

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


显然,我们开发的machine.config默认使用此属性,而生产服务器没有,因此需要在web.config中对其进行更改。

Hi riffnl,tnx for your answer。最初它只是IsLoggedOn(),然后,根据Umbraco论坛上的建议,我将其更改为IsLoggedOn()=test()。您可以将IsLoggedOn()添加到输出中,如:查看实际值是什么?实际值为“false”。然而,这是配置的问题,而不是xslt的问题。见下面我的答案。tnx求救
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">