我有一个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上是否安装了匿名身份验证模块,并将其设置为什么。我已经看到没有安装此模块的情况。