【发布时间】:2017-02-25 20:33:58
【问题描述】:
我有 2 个 Web 应用程序项目,都位于 TFS 源代码控制中。第一个项目不会导致 AntiForgery 令牌出现问题。
这是错误
System.Web.WebPages.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理
附加信息:提供的 ClaimsIdentity 上不存在“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier”或“http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider”类型的声明。要通过基于声明的身份验证启用防伪令牌支持,请验证配置的声明提供程序是否在其生成的 ClaimsIdentity 实例上提供这两个声明。如果配置的声明提供程序使用不同的声明类型作为唯一标识符,则可以通过设置静态属性 AntiForgeryConfig.UniqueClaimTypeIdentifier 进行配置。
找到的解决方案是添加
AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimsIdentity.DefaultNameClaimType;
那个项目的 Global.asax.cs 文件一直抛出那个错误,所以我这样做了,它解决了这个问题。
但是...现在这就是奇怪的部分了...当我运行“固定”应用程序时,我以其他 Web 应用程序的用户身份登录。
所以我决定运行另一个应用程序并注意到我仍然登录,所以我退出并停止调试。然后进入“固定”项目并注释掉
AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimsIdentity.DefaultNameClaimType;
项目运行正常。
显然,如果我不从其他应用程序中注销,则会引发此错误。
我不知道这是怎么回事,甚至不知道为什么会这样,有什么想法吗?
【问题讨论】:
-
@DavidG,是的。现在我什至无法发布项目
-
@DavidG,我去哪里以及如何去做?顺便说一句,谢谢你的解释
-
@DavidG,谢谢。我做了一些搜索,它很简单:CookieName = "WhateverICallIt";在 Startup.Auth.cs
-
清理了 cmets 现在一切都在答案中。
标签: c# asp.net asp.net-mvc tfs antiforgerytoken