Сайт Coldbox через внутренний сервер CommandBox возвращает другую переменную, чем тот же сервер serverd из IIS

Я только начинаю изучать ColdBox и только что прошел краткий обзор (https://coldbox.ortusbooks.com/getting-started/getting-started-guide) и добавил #getSetting("APPNAME")# в hello.index

Используя «стартовый сервер» CommandBox на моей машине разработки, он запускает свой внутренний сервер на порту 55700 (который не может выйти из брандмауэра), и я получаю ожидаемый результат (см. первое изображение), в котором он извлекает APPNAME из .env файл

Используя мою типичную настройку, в которой все серверы IIS обслуживаются через порт 80 или 443), APPNAME поступает из config/Coldbox.cfc (см. 2-е изображение).

Несмотря на то, что все страницы отображаются через IIS (даже если я делаю «остановку сервера») в CommandBox, переменные кажутся неправильными.

Кто-нибудь сталкивался с этим или знает, что я делаю неправильно?

Код для этой страницы на обоих скриншотах

<cfoutput>
<h1>hello.index</h1>
#now()#
<div class="alert alert-danger">#getSetting("APPNAME")#</div>
<div class="alert alert-success">#getSetting("ENVIRONMENT")#</div>
<cfdump var="#application#" expand="false">
</cfoutput>

введите здесь описание изображения введите здесь описание изображения


person Lance    schedule 09.02.2020    source источник


Ответы (2)


Убедитесь, что вы используете тот же веб-контекст: на первом изображении вы обращаетесь к 127.0.0.1, а на втором — к полному доменному имени. Это будет работать как тот же контекст, только если вы определите его как псевдоним на уровне конфигурации хоста сервлетов. Перепроверьте AccessLogs, если возможный веб-контекст одинаково поражен вашим клиентом.

person AndreasRu    schedule 10.02.2020
comment
Создает ли Coldbox контекст где-то еще, кроме coldbox_app_root_path? Вы можете увидеть пути на скриншотах выше. Я вижу WEB-INF на этом пути и предполагаю, что и 127, и TQDN используют этот путь. - person Lance; 10.02.2020
comment
Вы можете проверить путь веб-контекста, войдя в каждый веб-администратор и просмотрев раздел обзора по адресу: Http://127.0.0.1:[port]/lucee/admin/web.cfm и по адресу Http://cba.longthoughtsolutions.com:[port]/lucee/admin/web.cfm Оба пути веб-контекстов одинаковы? - person AndreasRu; 11.02.2020
comment
ты ударил его по голове. Несмотря на то, что Webroot был одинаковым, есть 2 разных контекста. Знаете ли вы, есть ли способ заставить 127 использовать другой контекст? И в будущем мне нужно будет установить CommandBox на рабочем сервере? Я хотел бы, чтобы этот сайт работал так же, как и все другие сайты CF на сервере, даже если это будет единственный сайт Coldbox. - person Lance; 11.02.2020

Используя «стартовый сервер» CommandBox на моей машине разработчика, он запускает свой внутренний сервер на порту 55700 (который не может выйти из брандмауэра)

Обсуждается, что CommandBox будет использовать любой порт, который вы ему укажете. Доступность порта 55700 (случайный порт, который он решил использовать при отсутствии явной настройки) за пределами вашего брандмауэра зависит от настроек вашего брандмауэра.

и я получаю ожидаемый результат (см. первое изображение), в котором он извлекает APPNAME из файла .env.

В ColdBox нет такой встроенной функции для извлечения имени приложения из файла .env. На самом деле, Coldbox НИЧЕГО не извлекает из файла .env из коробки. Теперь существуют различные модули Coldbox и CommandBox или ручные фрагменты кода, которые могут загружать настройки из файла .env, но вы не упомянули об их использовании и не показали свой код.

Используя мою типичную настройку, в которой все серверы IIS обслуживаются через порт 80 или 443)

Простите наше невежество, но здесь никто не знает, какова ваша типичная установка. Используете ли вы IIS для проксирования веб-сервера CommandBox через порты HTTP или AJP? У вас есть другая установка Lucee, установленная другим способом?

APPNAME берется из config/Coldbox.cfc (см. 2-е изображение).

Имя приложения всегда берется из файла ColdBox.cfc, если только вы не настроили что-то явно, чтобы оно работало иначе. Если у вас есть что-то, что, по вашему мнению, должно загружать имя приложения из другого места, поделитесь этой частью кода/настройки.

Несмотря на то, что все страницы отображаются через IIS (даже если я делаю «остановку сервера») в CommandBox,

Опять же, как настроен ваш сервер? Вы упомянули остановку CommandBox. У вас работает более одного сервера CommandBox? Вы попадаете в того, кого ожидаете? Если это сайт, обслуживаемый через IIS, привязан ли он вообще к CommandBox?

переменные не кажутся правильными.

Здесь невозможно помочь вам, так как вы не предоставили код или сведения о конфигурации, которые показывают, как этот параметр определяется в вашем коде.

Кто-нибудь сталкивался с этим или знает, что я делаю неправильно?

Боюсь, здесь недостаточно информации, чтобы понять, что вы делаете, не говоря уже о том, что вы делаете неправильно.

И ответить на пару ваших вопросов в комментариях...

И в будущем мне нужно будет установить CommandBox на рабочем сервере?

Только если вы хотите использовать CommandBox для размещения сайта. Для запуска сайта ColdBox на CommandBox нет никакой корреляции или требования. CommandBox — это просто интерфейс командной строки, который позволяет очень легко запускать и останавливать серверы CF (среди прочего). Многие люди размещают производственные сайты на CommandBox, но это вовсе не обязательно.

Я хотел бы, чтобы этот сайт работал так же, как и все другие сайты CF на сервере, даже если это будет единственный сайт Coldbox.

В сайте ColdBox нет ничего особенного — он работает как любое другое приложение ColdFusion. Я подозреваю, что вы запутались, думая, что CommandBox является своего рода требованием. Многие люди используют CommandBox для локальной разработки, потому что это быстро и просто, а затем развертывают на «традиционной» установке ColdFusion или Lucee на производстве просто из знакомства.

Отказ от ответственности: я ведущий разработчик CommandBox и коммиттер ColdBox MVC.

person Brad Wood    schedule 13.02.2020