AnonymousId始终为null

7

我有一个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等)吗?


开发环境和测试环境是否共享同一主机名? - haim770
@haim770 我的开发站点可以通过本地主机的 localhost:61615 访问,而测试站点则有一个实际的主机名。如果有所不同,该站点是一个子站点(例如 mysite.domain.com)。 - Lars Kristensen
1个回答

1
这应该可以工作。主机名和ASPXANONYMOUS cookie之间没有关联。
检查IIS上是否安装了匿名身份验证模块以及其设置。我曾经看到过未安装此模块的情况。

匿名身份验证模块出现在 IIS 管理器中的“模块”下面。这可能是 IIS 其他地方的配置问题吗? - Lars Kristensen
是的。IIS配置可以在多个级别上被覆盖。您需要检查配置是否在任何地方被修改过。 - Kaushal Kumar Panday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接