0

我有一个 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 notsolved for member "Microsoft.IdentityModel.Claims.ClaimsPrincipal,Microsoft.IdentityModel",但这与在开发人员工作站上运行 sitefinity 和我的问题有关在云端。

有任何想法吗?

4

1 回答 1

1

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

Unable to Find Assembly 'Microsoft.IdentityModel'

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

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

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

于 2013-02-13T12:58:37.093 回答