我在 64 位 Windows Server 2008 R2 系统上安装了 Tridion 内容交付 Web 服务,打算配置 UGC。(实际上我有两个服务,都出现了同样的问题)。
我的服务已配置环境框架 HttpModule,并且 cd_ambient_conf.xml 是产品附带的默认版本的副本,但 Security 元素已被注释掉。我正在通过浏览器中访问 odata.svc 端点进行测试。
在 Cartridges 元素中,我有以下内容:
<Cartridges>
<Cartridge File="cd_ambient_cartridge_conf.xml"/>
<Cartridge File="ugc_ambient_cartridge.xml"/>
</Cartridges>
当像这样配置时,或者如果我注释掉 cd_ambient 墨盒并保留 ugc_ambient 墨盒,我会收到一个空引用异常:
[NullReferenceException: Object reference not set to an instance of an object.]
Tridion.ContentDelivery.AmbientData.HttpModule.OnRequestStart
(Object sender, EventArgs e) +292
System.Web.SyncEventExecutionStep.System.Web
.HttpApplication.IExecutionStep.Execute() +79
System.Web.HttpApplication.ExecuteStep(
IExecutionStep step, Boolean& completedSynchronously) +269
如果我仅配置 cd_ambient 墨盒,那么我会收到以下错误:
[AmbientDataException: Error while configuring ambient data framework]
如果我移除两个墨盒,服务就会启动而不会出现错误。我猜测空引用错误可能是由于缺少配置值引起的,但至少 cd_ambient_conf.xml 通过了架构验证,所以可能不是。
那么... 什么可能是导致该问题的原因,是否有任何调试或分析技术可以帮助我找到更多信息?
编辑:我现在已经从 Cartridges 中删除了 cd_ambient_cartridge_conf.xml 引用。因此,仅使用 ugc_ambient_cartridge.xml 引用,我在 cd_core 日志中收到以下错误(并且我又回到了 [AmbientDataException:配置环境数据框架时出错] 错误):
2012-05-11 15:03:51,073 WARN AmbientDataContext - There is no current ambient
data context - the ambient data framework is not properly initialised
2012-05-11 15:03:51,171 ERROR EngineFactory - Unable to configure the
AmbientData Framework
com.tridion.configuration.ConfigurationException:
Can't find configuration file: [ ugc_ambient_cartridge.xml ]
at com.tridion.configuration.XMLConfigurationReader.readConfiguration(
XMLConfigurationReader.java:92) ~[cd_core.jar:na]
at com.tridion.ambientdata.AmbientDataConfig.getCartridgeConfigurations(
AmbientDataConfig.java:155) ~[cd_ambient.jar:na]
at com.tridion.ambientdata.EngineFactory.newEngine(
EngineFactory.java:45) ~[cd_ambient.jar:na]
答案1
可能是 cd_ambient_cartridge_conf.xml 包含错误。默认墨盒作为例子您可以使用自定义墨盒做什么。
从 cd_ambient_conf.xml 中取出该墨盒并重试。
空引用异常可能意味着您缺少 jar 和/或 UGC 配置。请查看 Tridion 日志以获取有关此问题的其他信息。
UPDATE
以下是我支持 UGC 的网站内容:
在 Web.Config 中(仅显示相关部分):
<appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
<add key="ODataEndpoint.URL" value="http://localhost:903/odata.svc"/>
<add key="ODataEndpoint.ConnectionTimeout" value="20000"/>
<add key="ODataEndpoint.ReadTimeout" value="20000"/>
</appSettings>
[...]
<controls>
<add tagPrefix="tridion" namespace="Tridion.ContentDelivery.Web.UI" assembly="Tridion.ContentDelivery"/>
<add tagPrefix="ugc" namespace="Tridion.ContentDelivery.UGC.Web.UI" assembly="Tridion.ContentDelivery.UGC" />
</controls>
[...]
<modules runAllManagedModulesForAllRequests="true">
<add type="Tridion.ContentDelivery.AmbientData.HttpModule" name="AmbientFrameworkModule" preCondition="managedHandler" />
</modules>
在 /bin 中:
- Tridion.内容交付.AmbientData.dll
- Tridion.内容交付.UGC.dll
(加上标准款)
在 /bin/config/cd_ambient_conf.xml 中:
<Cartridges>
<Cartridge File="ugc_ambient_cartridge.xml"/>
</Cartridges>
在 /bin/config/cd_ugc_conf.xml 中:
<ODataEndpoint URL="http://localhost:903/odata.svc" />
此文件中的所有其他内容均为默认内容。
在/bin/lib中,UGC相关:
- ucg_tcdl.jar
- ugc_web服务
- ugc_动态.jar
- ugc模型
- ugc_存储.jar
- 标签库
- 环境变量