Asp.net Tridion分析和个性化错误:用户不能为null。请确保WAI配置正确

Asp.net Tridion分析和个性化错误:用户不能为null。请确保WAI配置正确,asp.net,tridion,Asp.net,Tridion,我有一个ASP.NET页面(index.aspx),使用Tridion 2011 SP1发布的评测和个性化设置。如果用户以前查看过3个标记为“golf”(通过cat+关键字)的页面,它只显示一个动态组件演示文稿和第二个动态组件演示文稿 我通过将TBBs“目标组个性化设置”和“激活跟踪”添加到我的默认完成操作来启动评测。我重新发布了该页面,并看到它使用评测代码创建了动态cp,一切进展顺利: <tridion:ComponentPresentation runat="server" PageU

我有一个ASP.NET页面(index.aspx),使用Tridion 2011 SP1发布的评测和个性化设置。如果用户以前查看过3个标记为“golf”(通过cat+关键字)的页面,它只显示一个动态组件演示文稿和第二个动态组件演示文稿

我通过将TBBs“目标组个性化设置”和“激活跟踪”添加到我的默认完成操作来启动评测。我重新发布了该页面,并看到它使用评测代码创建了动态cp,一切进展顺利:

<tridion:ComponentPresentation runat="server" PageURI="tcm:8-667-64" ComponentURI="tcm:8-668" TemplateURI="tcm:8-666-32"/>
<tridion:TargetGroup runat="server" ItemURI="tcm:8-667-64">
    <tridion:Conditions runat="server" Negate="false" Operator="AND">
        <tridion:Conditions runat="server" Negate="false" Operator="OR">
            <tridion:Conditions runat="server" Negate="false" Operator="AND">
                <tridion:Condition runat="server" Type="TrackingKey" Operator="=" Negate="false" Name="Golf" Value="3"/>
                </tridion:Conditions>
            </tridion:Conditions>
    </tridion:Conditions>
    <tridion:ComponentPresentation runat="server" PageURI="tcm:8-667-64" ComponentURI="tcm:8-663" TemplateURI="tcm:8-666-32"/>  
</tridion:TargetGroup>
<tridion:IncrementKey runat="server" ItemURI="tcm:8-667-64" Name="Golf" ComponentURI="tcm:8-663"/>

问题:在浏览器中查看index.aspx时,会出现以下错误:

用户不能为空。请确保WAI配置正确

我检查了代理数据库,那里没有数据。我相信我的cm_wai_conf.xml文件配置正确。我读过这篇文章,其中建议WAI使用我添加到windows中的环境变量REMOTE_USER,但仍然不走运。

以前是否有人遇到过此错误并能提供帮助? 如有必要,我可以提供我的cd_wai_conf.xml文件

提前谢谢,非常感谢你的帮助,这让我发疯了

编辑:添加了配置文件 XML不会在StackOverflow中呈现,因此我在PasteBin中添加了它:

当您没有在cd_wai_conf.xml中为用于访问站点的URL确认演示ID时,我看到了这一点。默认情况下,我相信这会使用
localhost
。确保已为用于访问站点的任何URL定义了主机URL


同时,再次检查您的WAI模块是否正确添加到webb应用程序的web.config中。在IIS中,请确保模块位于正确的位置,这可能因您是否处于IIS6或更高版本,以及您的应用程序池处于经典模式还是集成模式而有所不同

谢谢大家。你说得对。未在我的网站的web.config中正确配置WAI模块。我的站点在IIS7集成模式下运行,因此我将其配置如下:

<system.webServer>
<directoryBrowse enabled="true" />
<modules>
    <add name="TridionWAIHttpModule" type="Tridion.ContentDelivery.Web.WAI.WAIModule, Tridion.ContentDelivery" preCondition="managedHandler" />
</modules>
<validation validateIntegratedModeConfiguration="false"/></system.webServer>

这给了我一个新的错误“对象引用未设置为对象的实例”。我将AppPool更改为经典模式,并添加了以下行:

<httpModules>
    <add type="Tridion.ContentDelivery.Web.WAI.WAIModule, Tridion.ContentDelivery" name="TridionWAIHttpModule" /> 
</httpModules>

然后加载页面,分析和个性化工作100%


非常感谢你们在这里的时间,伙计们。我希望这对将来的其他人有所帮助。

也许您可以添加您的cd_wai_conf.xml,以便我们可以查看它。谢谢Chris。这是我的cd_wai_conf.xml文件。我试图删除全部内容,以查看错误是否发生了变化,但仍然保持不变。这对我来说意味着我的改变没有生效。请看下面,我已将端口设置为8081,原来是80。我想这个更新还没有注册。我已经重新启动了所有Tridion服务和content manager COM+。我甚至重新启动了整个服务器,但仍然出现了这个错误。关于如何注册我的更改,您还有其他建议吗?您使用什么URL访问您的页面?你的配置文件在哪里?其他CD功能(如链接)是否也起作用?最后,您是否已将WAI HttpModule添加到IIS中web应用程序的web.config中?同意Chris的说法。首先检查您的wai模块是否(正确)启用,然后检查您的请求是否具有相应的已配置演示文稿(在cd_wai_conf.xml中)。请注意,当您没有启用WAI模块时,您将得到与您得到的错误完全相同的结果。如果到目前为止一切正常,但仍然存在错误…启用调试日志记录(使用网站配置文件夹中的logback.xml)并检查您收到的警告/错误。另一个小提示:要在配置更改后重新测试,您只需重新启动正在更改的网站的应用程序池。非常感谢各位。你说得对。它正在工作。我添加了一个答案,因为我无法将编码行添加到此注释中。再次感谢,你帮助了我很多,也许你可以考虑接受并投票支持那些帮助你的答案。此外,请考虑提交到第51区的建议,以便我们得到一个专门的SDL三位一体问答网站SITEWELL,你确实帮了我一点,但我恐怕改变AppSople到经典对我来说什么也没做。遗憾的是,仍然坚持“对象引用未设置为对象的实例”。