我在以前的项目中使用过ModelGlue和ColdSpring多年没有问题。我正在使用CF10 ModelGlue 3.2构建这个新网站。
我已经下载并安装了该框架,在我的本地开发MacBook上构建了该网站而没有出现问题,并试图将其部署到客户端的环境中......坏消息!
他们使用IIS,乍一看似乎是从他们的webroot提供的,但通过CFAdmin中的一些IIS voodoo和'/'映射,他们提供服务
http://b.company.com/ ---> D:\inetpub\wwwroot\a\b\index.cfm
在摆弄框架以找到框架的位置之后,我已经确定了:
D:\inetpub\wwwroot\a\b\coldspring
D:\inetpub\wwwroot\a\b\ModelGlue
D:\inetpub\wwwroot\a\b\Application.cfc
中的:
this.mappings['coldspring'] = expandPath('./coldspring/');
this.mappings['ModelGlue'] = expandPath('./ModelGlue/');
当我运行它时,我得到了一个MG框架实例化问题,它试图从ColdSpring中获取第一个bean(它会定期更改):
Could not find the ColdFusion component or interface D:\inetpub\wwwroot\ModelGlue\gesture\factory\TypeDefaultingMapBasedFactory.cfc.
但是,问题实际上来自父bean (extends)无法实例化。稍微修改cfc会给出一些诊断信息:
<cftry>
<!--- original line below --->
<cfset variables.beanInstance = createObject("component", getBeanClass()) />
<cfcatch type="any">
<cfdump var="#expandPath(".")#" />
<cfdump var="#getBeanClass()#" />
<cfdump var="#cfcatch#" />
<cfabort>
</cfcatch>
</cftry>
的产率:
D:\inetpub\wwwroot\a\b
ModelGlue.gesture.module.XMLModuleLoaderFactory
{error report}
请注意,CS成功找到并实例化D:\inetpub\wwwroot\a\b\ModelGlue\gesture\module\XMLModuleLoaderFactory
,但查找其父目录的不同目录(D:\inetpub\wwwroot\ModelGlue
)。 (对于那些不熟悉的,XMLModuleLoaderFactory extends="ModelGlue.gesture.factory.TypeDefaultingMapBasedFactory"
作为其cfc定义的一部分。
我在我的智慧结束;我已经尝试了所有可能的配置更改,移动了库等,并且做得很短。作为外部开发人员,我无法更改他们的Web服务器,但我可以完全控制App.cfc以及下面的所有内容。有没有人知道出了什么问题?
任何帮助将不胜感激。
我将ModelGlue版本回滚到3.1.299,这似乎解决了我的问题。
我还覆盖了CFAdmin'/'映射以指向我的应用程序路径
的Application.cfc:
this.mappings['coldspring'] = expandPath('./coldspring/');
this.mappings['ModelGlue'] = expandPath('./ModelGlue/');
this.mappings['/'] = expandPath('.');
我不确定MG 3.2出了什么问题,但3.1.299似乎有所帮助。