Ошибка ColdFusion: «Элемент REMOTEADDRESS не определен в ОШИБКЕ».Как мне это исправить? - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть пользовательская страница ошибки ColdFusion, которая неоднократно возвращает следующую ошибку, часто после того, как бот сканирует страницу:

Элемент REMOTEADDRESS не определен в ОШИБКЕ.Ошибка произошла на ### (номер страницы).

Я не уверен, почему он возвращает эту неопределенную ошибку элемента, или если есть способ обойти ее, кроме удаления ошибки #error.remoteAddress # code.

Мой код выглядит так:

<cferror type="REQUEST" template="error.cfm" mailto="email@domain.com">
<cfoutput>
 <ul>
  <li><strong>Your Location:</strong> #error.remoteAddress#
  <li><strong>Your Browser:</strong> #error.browser#
  <li><strong>Date and Time the Error Occurred:</strong> #error.dateTime#
  <li><strong>Page You Came From:</strong> #error.HTTPReferer#
  <li><strong>Error Diagnostics</strong>:
  <p>#error.diagnostics#</p>
 </ul>
</cfoutput>

Ответы [ 3 ]

3 голосов
/ 01 марта 2011

Вы должны либо использовать решение Эдварда, чтобы проверить существование переменной, либо cfparam значение, чтобы оно всегда существовало:

<cfparam name="Error.remoteAddress" default="No Remote Address" />
2 голосов
/ 01 марта 2011

remoteAddress доступен только в запросах и типах ошибок , поэтому проверьте тип ошибки перед отображением переменной ошибки.

<cfif ListFind("request,exception",error.type)>
   <li><strong>Your Location:</strong> #error.remoteAddress#</li>
</cfif>

Вы также можете проверить, что тип ошибки не "проверка", но мне нравится быть позитивным человеком.

пс. обратите внимание, я закрыл ваш элемент списка. ;)

2 голосов
/ 28 февраля 2011

Без полного понимания общей логики здесь, если вы хотите иметь возможность безопасно проверить, существует ли переменная или член структуры, прежде чем пытаться ее оценить, вы можете сделать что-то вроде

<cfif isDefined("error") AND structKeyExists(error, "remoteAddress")>#error.remoteAddress#</cfif>
...