我有一个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
的值始终为空。
在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
不再为null。它现在以Global.asax
中添加的事件处理程序提供的格式填充。因此,尽管看起来我已经正确设置了一切,但我仍然想知道是什么阻止了生成该ID。这是配置问题吗?我没有按照正确的顺序进行操作(重新启动服务器/回收应用程序池、清除cookie等)吗?