2010-07-29 3 views
1

Это простой xslt, который показывает статус входа текущего пользователя. Все работало отлично на сервере разработки, но как только мы настроили приложение на производство, umbraco.librarty.IsLoggedOn() всегда начинал возвращать false.Umbraco.Library.IsLoggedOn() не работает с XSLT

Приложение использует метод umbraco.libraty.IsLoggedOn() из .NET-кода и оттуда возвращает правильное значение, но из 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, чтобы увидеть, если вы вошел в систему или нет.

Возможно, это проблема с cookies и XSLT? Кто-нибудь знает? Tnx

ответ

0

Хорошо, это решение моей проблемы.

Сессия была недоступна из xslt, ни с помощью элемента управления ascx, который пытался получить доступ к сеансу из кода. Наше приложение на 99% использует веб-сервис asp.net с методами, отмеченными с помощью [WebMethod (EnableSession = true)]. Внутри этих методов сеанс был доступен. Это заставило меня подумать, что сеанс фактически отключен на веб-сайте по умолчанию.

Через некоторое Googling, я считаю, что я должен добавить это свойство в файле 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

Hi riffnl, tnx для вас ответ. Первоначально это был только IsLoggedOn(), затем я поменял его на IsLoggedOn() = test() по рекомендации на форуме Umbraco. –

+0

Можете ли вы добавить IsLoggedOn() для вывода следующим образом: , чтобы узнать, что такое значение на самом деле? – riffnl

+0

фактическое значение было «false». Однако это была проблема с конфигурацией, а не с xslt. См. Мой ответ ниже. tnx для справки –

Смежные вопросы