Рассмотрим следующую структуру для сайта ColdFusion 9:Является ли область сеансов ColdFusion устойчивой к приложению?
/root
..../MyApp
........../Application.cfc
........../Index.cfm
..../SharedComponents
........../Common.cfc
В common.cfc содержит все общие функции, которые я хотел бы разделить на несколько приложений под корень.
Одна из этих функций позволяет мне динамически создавать имя сеанса и присваивать значение.
<cffunction name="CreateSession" access="remote" returntype="any">
<cfargument name="strSessionName" required="yes" type="string">
<cfargument name="strSessionValue" required="yes" type="string">
<cfset Session["#strSessionName#"] = "#strSessionValue#" />
</cffunction>
Я вызываю эту функцию через AJAX, поскольку я хочу, чтобы этот сеанс был создан после процесса JavaScript.
Это выражение, которое я использую в ColdFusion, которое затем отображается в фактический URL-адрес, который затем вызывается через AJAX.
"#Application.Protocol & "://" & CGI.SERVER_NAME#/SharedComponents/common.cfc?method=CreateSession&strSessionName=TestSessionName&strSessionValue=TestValue"
Однако при попытке отобразить этот недавно созданный сеанс на Index.cfm ничего не отображается.
Я попытался переместить common.cfc в папку MyApp, изменив путь выражения ColdFusion (показано выше), чтобы отразить новый путь, и это не проблема.
Это приводит меня к мысли, что я не могу установить сессию функции вне сферы моего приложения (что, будучи в папке MyApp, где находится Application.cfc)
Мой вопрос, является существует способ вызова функции за пределами области приложения, которая все еще может управлять сеансами приложения?
Сессия привязана к пользователю. 'Session [" # strSessionName # "]' на самом деле не создает имя сеанса. Он создает переменную в сеансе пользователя с определенным именем. Если вы хотите поделиться чем-то вне области приложения, вам может потребоваться рассмотреть область сервера. –
Сессии по сути связаны с приложением. Если файл не покрывается Application.cfc/cfm, то сеанса нет. – Leigh