AnonymousId始终为null

时间:2016-02-09 07:48:12

标签: c# asp.net-mvc iis

我有一个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的快速虚拟网站,它在Test环境中工作,所以我无法弄清楚我在实际网站中做错了什么。

非常感谢任何帮助。

<小时/> 修改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),如果这有任何区别。虚拟站点也是一个子站点,但是匿名身份验证在这里工作了#34;开箱即用&#34;。

编辑2:在测试环境中,AnonymousId似乎不再为null。它现在填充了添加到Global.asax的eventhandler中提供的格式。因此,虽然看起来我已经正确设置了所有内容,但我仍然想知道可能阻止生成Id的原因。这是配置问题吗?我没有按正确的顺序做事(重启服务器/回收应用程序池,清除cookie等)?

1 个答案:

答案 0 :(得分:1)

这应该有效。主机名和ASPXANONYMOUS cookie之间没有关联

检查IIS上是否安装了匿名身份验证模块以及它设置的内容。我见过没有安装此模块的实例。