我正在2017年运行VS2012 MVC 5项目。除了那之外,一切似乎都很好
ClaimsPrincipal.Current
不会返回相同的内容!!
完全相同的代码在VS2012,开发和生产服务器上完美运行。
虽然从VS2017 ClaimsPrincipal.Current
运行项目时表现不同。
做了一些研究我找到了这篇文章 http://davidpine.net/blog/principal-architecture-changes/
声明.NET Core ClaimsPrincipal.Current
的行为应该不同。
在我的情况下,我在两个IDE(4.0.30319.42000)中运行完全相同的.NET版本并使用Environment.Version
进行验证。
同时按ClaimsPrincipal.Current
上的F12导航到完全相同的mscorlib.dll文件。
任何帮助将不胜感激。
答案 0 :(得分:0)
找到造成这种情况的原因!
WebMatrix.Data.dll
WebMatrix.WebData.dll
当这些文件存在于bin文件夹中时,会导致此行为。 此外,它们会覆盖RazorVersion并导致开发服务器抛出不匹配的程序集引用异常。
在我的项目中,我引用了 WebMatrix.WebData版本2.0.0.0
由于某些原因,Visual Studio 2012忽略了该引用,并且它没有将WebMatrix.dll发布到bin文件夹,因此一切正常。
Visual Studio 2017将这些dll发布到bin文件夹中,这导致了这种可能超越内置简单成员资格提供程序实现的冲突。
删除对 WebMatrix 的引用修复了此问题。