我有一个ASP.NET MVC网站。当网站上发生错误时,我想记录该异常以及Request.AnonymousID的值,以便能够发现一个用户遇到20个错误,还是20个用户遇到相同的错误。已将以下内容添加到web.config文件:

<system.web>
  <anonymousIdentification enabled="true" />
  ...
</system.web>

在Visual Studio中开发并使用IIS Express时,这可以按预期工作。但是,当网站移至测试环境(在Windows Server 2012 R2上运行IIS 8.5)时,Request.AnonymousID的值始终为null。

还为IIS中的站点配置了匿名身份验证。每次更改配置后,我都尝试重新启动站点,回收应用程序池并清除浏览器中的cookie-似乎没有任何效果。生成了.ASPXANONYMOUS cookie,但是当我尝试在代码中使用它时,ID始终为空。

我什至尝试创建一个仅在页面上显示AnonymousId的快速虚拟站点,并且该站点可以在测试环境中使用,因此我无法弄清楚我在实际站点中做错了什么。

任何帮助将不胜感激。

编辑1:
我将以下内容添加到Global.asax中,以生成自定义的AnonymousId:
protected void AnonymousIdentification_Creating(object sender, AnonymousIdentificationEventArgs args)
{
    string id = string.Format("Test-{0}", Guid.NewGuid());
    args.AnonymousID = id;
}

同样,这在我的机器上和测试服务器上的虚拟站点上都有效,但在实际站点上不起作用。

该网站是一个子网站(例如 mysite .domain.com)(如果有任何区别)。虚拟站点也是子站点,但是这里的匿名身份验证“开箱即用”。

编辑2:在测试环境中的站点上,AnonymousId似乎不再为空。现在,它使用添加到Global.asax中的事件处理程序中提供的格式进行填充。因此,尽管看起来我已经正确设置了所有内容,但我仍然想知道是什么原因阻止了ID的生成。这是配置问题吗?我是否没有按照正确的顺序进行操作(重新启动服务器/回收应用程序池,清除cookie等)?

最佳答案

这应该工作。主机名和ASPXANONYMOUS Cookie之间没有关联

检查IIS上是否安装了匿名身份验证模块,并将其设置为什么。我已经看到没有安装此模块的情况。

08-27 08:27