【问题标题】:Type is not resolved for member Microsoft.IdentityModel.Claims.ClaimsPrincipal未为成员 Microsoft.IdentityModel.Claims.ClaimsPrincipal 解析类型
【发布时间】:2013-12-16 08:54:01
【问题描述】:

我有一个 MVC 4 应用程序部署到已运行数月的 Azure 云服务。突然,该应用程序停止工作,我在允许匿名访问的页面上看到 401 错误。深入事件日志会发现:

<EventData>
 <Data>System.AppDomain/50824127</Data>
 <Data>System.Runtime.Serialization.SerializationException: Type is not resolved for member 'Microsoft.IdentityModel.Claims.ClaimsPrincipal,Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. at System.Web.Hosting.ApplicationManager.GetUpdatedTotalCacheSize(Int64 sizeUpdate) at System.Web.Hosting.ObjectCacheHost.System.Runtime.Caching.Hosting.IMemoryCacheManager.UpdateCacheSize(Int64 size, MemoryCache memoryCache) at System.Runtime.Caching.CacheMemoryMonitor.GetCurrentPressure() at System.Runtime.Caching.MemoryMonitor.Update() at System.Runtime.Caching.MemoryCacheStatistics.CacheManagerThread(Int32 minPercent) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at System.Threading._TimerCallback.PerformTimerCallback(Object state)</Data>
 <Data>w3wp</Data>
 <Data>2548</Data>
 </EventData>

经过数小时的故障排除和检查配置,我无法找出发生这种情况的原因。程序集 Microsoft.IdentityModel, 3.5.0.0 位于部署包的 bin 文件夹中,并且项目具有对 WIF nuget 包的正确引用。

更糟糕的是,我的项目在一个天蓝色云服务中运行,但在另一个云服务中却不行(如上所述失败)。相关问题似乎数量有限,例如Type is not resolved for member "Microsoft.IdentityModel.Claims.ClaimsPrincipal,Microsoft.IdentityModel",但这一个与在开发人员工作站上运行sitefinity有关,而我的问题在云端。

有什么想法吗?

【问题讨论】:

  • 据我所知,如果您运行的是 .NET 4.5,则不再需要启动任务,因为新程序集来自 GAC。您可能会确保没有将 WIF 和较新的 Microsoft.IdentityModel 命名空间混在一起。在这里查看我对自己问题的回答:stackoverflow.com/a/12950590/1014822
  • 我仍在使用此应用程序使用 .NET 4。
  • 那么下面的答案是正确的:你需要运行一个启动任务来安装WIF。仅在 bin 文件夹中包含 .dll 是行不通的。详情在这里:stackoverflow.com/a/10206387/1014822
  • @JcFx - 这在世界上都很有意义,除了我能够在另一个 azure 计算服务中部署完全相同的代码,而且它工作正常,这让我发疯,我没有还没弄明白为什么。

标签: asp.net-mvc azure wif


【解决方案1】:

我们在 Azure 项目中遇到了类似的问题,但并不完全相同。我们的错误是

Unable to Find Assembly 'Microsoft.IdentityModel'

原因是 Azure 虚拟机默认没有 WIF。即使我们的 bin 文件夹中有Microsoft.IdentityModel,当应用程序尝试解析对Microsoft.IdentityModel 的引用时,即使它不相关,它也会失败并抛出缺少引用的错误。

这个问题可以通过在启动任务中安装 WIF 来解决。此链接包含有关如何执行此操作的详细信息。

http://blogs.msdn.com/b/sriharsha/archive/2012/04/07/windows-azure-unable-to-find-assembly-microsoft-identitymodel.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多