在ColdFusion 10中动态设置主机服务器的最佳方法

时间:2014-06-26 12:26:13

标签: coldfusion coldfusion-10

我使用以下命令动态检测主机服务器。使其动态化的重要性在于,目前存在太多硬编码重定向,例如:

http:s//mysite.com/hr/index.cfm 

在我的应用中。 当我从生产站点移动到开发站点然后再回到生产站点时,我必须逐个手动更改/注释掉这个http / https,这不仅耗时而且危险。

这是我发现的可以检测主机服务器的代码。然后我做以下事情:

      <CFSET inet = CreateObject("java", "java.net.InetAddress")>
      <CFSET inet = inet.getLocalHost()>
      <CFSET HostServer = "#inet.getHostName()#">
      <CFSET ThisHostServer = "#LEFT(HostServer,6)#">
      <CFSWITCH expression="#Trim(ThisHostServer)#"><!--- Prod or Dev server --->
         <CFCASE value="myprodsite.com">
           <CFSET UseThisURL = "http://myprodsite.com">
         </CFCASE>
         <CFCASE value="mydevsite.com">
           <CFSET UseThisURL = "http://myDevsite.com">
         </CFCASE>
      </CFSWITCH>

然后在每个存在链接或重定向的页面上,我只需要使用:

      #UseThisURL#/hr/index.cfm

我的问题是:

  1. 在应用程序中设置#UseThisURL#的最佳方法是什么? 我在Linux环境中使用ColdFusion 10和Application.cfc

  2. 我应该将其设置为应用程序还是会话范围?

  3. 由于所有内容都在应用程序或会话范围内,当用户在某个页面上空闲且应用程序/会话范围已过期时,当用户单击链接时是否会生成错误?如何防止用户看到使用此技术导致的错误?请指教,谢谢!

1 个答案:

答案 0 :(得分:0)

我使用的最佳做法是创建config.cfc,它可以包含getServerSpecificVariables()之类的函数来返回结构。此结构将保存在您的应用程序范围内,因为您不希望为每个会话启动创建USEThisURL。当您需要重置时,只需清除您的应用程序范围。在config onApplicationStart内的Application.cfc事件中component{ public struct function getServerSpeceficVariables(){ var config = {}; var inet = CreateObject("java", "java.net.InetAddress"); inet = inet.getLocalHost(); HostServer = inet.getHostName(); ThisHostServer = LEFT(HostServer,6); switch(Trim(ThisHostServer)){ case 'myprodsite.com':{ config.useThisURL = ''; break; } case 'mydevsite.com':{ config.useThisURL = ''; break; } } return config; } } 组件下方实例化 实施例

Config.cfc:

{{1}}