2010-07-29 55 views
1

這是簡單的xslt,它顯示當前用戶的登錄狀態。在開發服務器上一切正常,但是一旦我們在生產環境中設置了應用程序,umbraco.librarty.IsLoggedOn()就會始終返回false。Umbraco.Library.IsLoggedOn()不適用於XSLT

應用程序使用.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

回答

0

好吧,這是解決我的問題。

會話不能從xslt獲得,也不能從試圖從代碼隱藏訪問會話的ascx控件提供。我們的應用程序使用asp.net webservice的99%,標記爲[WebMethod(EnableSession = true)]的方法。在這些方法中,會話是可用的。這讓我覺得會話實際上在網站上被禁用了。

一些google搜索後,我發現我有這個屬性添加到web.config文件:

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

顯然,在我們的發展在machine.config具有這種性質爲默認,和生產服務器沒't,所以需要在web.config中進行更改。

2

變化

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

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

嗨riffnl,tnx爲你解答。最初它只是IsLoggedOn(),然後,我通過Umbraco論壇上的建議將它更改爲IsLoggedOn()= test()。 – 2010-07-30 16:09:11

+0

您可以添加IsLoggedOn()來輸出:來查看實際值是什麼? – riffnl 2010-08-01 11:17:40

+0

實際值爲'假'。但是,這是配置問題,而不是xslt。請參閱下面的答案。 TNX尋求幫助 – 2010-08-02 09:32:32

相關問題