2014-10-27 98 views
7

刚刚更新了Azure移动服务的许多软件包,现在我收到“未找到方法”错误。这在其他地方还没有报道过。任何想法哪个包需要降级?还是另一个解决方法?未找到JwtSecurityTokenHandler.set_CertificateValidator方法

[MissingMethodException: Method not found: 'Void System.IdentityModel.Tokens.JwtSecurityTokenHandler.set_CertificateValidator(System.IdentityModel.Selectors.X509CertificateValidator)'.] 
     Microsoft.WindowsAzure.Mobile.Service.Security.Providers.GoogleLoginProvider..ctor(HttpConfiguration config, IServiceTokenHandler tokenHandler) +0 
     lambda_method(Closure , Object[]) +174 
     Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate() +419 

    [DependencyResolutionException: An exception was thrown while invoking the constructor 'Void .ctor(System.Web.Http.HttpConfiguration, Microsoft.WindowsAzure.Mobile.Service.Security.IServiceTokenHandler)' on type 'GoogleLoginProvider'. ---> Method not found: 'Void System.IdentityModel.Tokens.JwtSecurityTokenHandler.set_CertificateValidator(System.IdentityModel.Selectors.X509CertificateValidator)'. (See inner exception for details.)] 
     Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate() +999 
     Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) +589 
     Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters) +109 
     Autofac.Core.Resolving.InstanceLookup.<Execute>b__0() +63 
     Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(Guid id, Func`1 creator) +201 
     Autofac.Core.Resolving.InstanceLookup.Execute() +262 
     Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable`1 parameters) +282 
     Autofac.Core.Resolving.InstanceLookup.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters) +72 
     Autofac.Features.Collections.<>c__DisplayClass6.<RegistrationsFor>b__1(IComponentRegistration cr) +60 
     System.Linq.WhereSelectArrayIterator`2.MoveNext() +66 
     System.Linq.Buffer`1..ctor(IEnumerable`1 source) +335 
     System.Linq.Enumerable.ToArray(IEnumerable`1 source) +77 
     Autofac.Features.Collections.<>c__DisplayClass4.<RegistrationsFor>b__0(IComponentContext c, IEnumerable`1 p) +256 
     Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) +191 
     Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters) +109 
     Autofac.Core.Resolving.InstanceLookup.Execute() +158 
     Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable`1 parameters) +282 
     Autofac.Core.Resolving.ResolveOperation.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters) +60 
     Autofac.Core.Resolving.ResolveOperation.Execute(IComponentRegistration registration, IEnumerable`1 parameters) +111 
     Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters) +279 
     Autofac.Core.Container.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters) +57 
     Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) +175 
     Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) +250 
     Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) +72 
     Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) +63 
     Microsoft.WindowsAzure.Mobile.Service.Config.AutofacDependencyScope.GetServices(Type serviceType) +269 
     System.Web.Http.DependencyScopeExtensions.GetServices(IDependencyScope services) +172 
     System.Web.Http.DependencyScopeExtensions.GetLoginProviders(IDependencyScope services) +41 
     Microsoft.WindowsAzure.Mobile.Service.Config.OwinAppBuilder.ConfigureAuthentication(IAppBuilder appBuilder, HttpConfiguration config) +379 
     Microsoft.WindowsAzure.Mobile.Service.Config.OwinAppBuilder.Configuration(IAppBuilder appBuilder) +70 
     Microsoft.WindowsAzure.Mobile.Service.<>c__DisplayClass5.<ConfigureOwin>b__4(IAppBuilder appBuilder) +40 
     Microsoft.WindowsAzure.Mobile.Service.Config.StartupOwinAppBuilder.Configuration(IAppBuilder appBuilder) +234 
+0

一般来说,更新后端项目中的软件包并不是一个好主意,因为我们的主机环境中有特定版本,当您更新时可能不兼容。 – 2014-12-05 20:07:17

回答

10

我刚有同样的问题,并已获得了移动业务VS

卸载包WindowsAzure.MobileServices.Backend.Entity

通过

工作再次在包管理器控制台卸载软件包WindowsAzure.MobileServices.Backend.Tables

uninstall-package WindowsAzure.MobileServices.Backend

然后

安装封装WindowsAzure.MobileServices.Backend -Version 1.0.342

安装封装WindowsAzure.MobileServices.Backend.Tables -Version 1.0.342

安装封装WindowsAzure。 MobileServices.Backend.Entity -Version 1.0.342

不知道为什么,这是后这里发生的一切,虽然

+0

我仍然得到相同的错误,但使用Azure AD。尝试了几个版本,包括342和405,但没有成功。这个问题在其他地方是否有任何反馈? – dmpontifex 2014-11-10 12:05:21

+0

我有同样的问题。这完全与System.IdentityModel.Tokens.Jwt有关,它只会导致高于342的任何问题。MobileServices团队没有正确引用此dll。 – 2014-11-12 13:38:10

+1

只安装WindowsAzure.MobileServices.Backend.Entity,因为它会安装其他:) – saramgsilva 2014-11-30 17:44:12

2

同样的问题更新ams nuget pkg。 回滚工作,但它比解决方案更多的解决方法。

编辑:您可以回滚到405版本。

+0

您是否找到解决方案? – 2014-10-31 13:57:03

+0

还没有。也发布在[MSDN](https://social.msdn.microsoft.com/Forums/azure/en-US/5eae79c1-1580-4499-b890-f9d532fb3025/jwtsecuritytokenhandlersetcertificatevalidator-method-not-found?forum=azuremobile)论坛和[Git](https://github.com/Azure/azure-mobile-services/issues/463)问题,但尚未在任何地方回答。 – JeremyBP 2014-11-01 11:44:53

0

我的团队仍在调查此问题,但我还没有掌握所有信息,但到目前为止,我已观察到更新至439不会引发此问题。您可以通过在Visual Studio中创建一个新的移动服务,然后进入NuGet并将Mobile Services .NET后端实体框架软件包更新到最新版本(439)来验证这一点。 更新完成后,按F5,您应该看到服务正常加载,没有任何错误。

我能够通过选择Microsoft.Owin.Security.ActiveDirectory包并将其从2.1.0更新到3.0.0来重现此问题。当然,在NuGet中选择“全部更新”选项将实现相同的目标(还有更多)。

虽然我们继续调查确切的修复应该是什么,但是您能否确认升级到439而不升级到AD 3.0.0可以修复问题?

+0

我没有升级Microsoft.Owin.Security.ActiveDirectory,但我确实升级了Microsoft.Owin.Cors,因此升级了Microsoft.Owin,而且我遇到了问题。我应该检查其他任何软件包吗?我也升级了JWT软件包。 – BoB 2014-12-02 05:54:15

4

好吧,我最终发现问题得益于保罗的建议。 这是因为System.IdentityModel.Tokens.Jwt 4.0.0包的版本。

事实上,更新Microsoft.Owin.Security.ActiveDirectory包从2.1.0至3.0.0原因从3.0.2所述JWT包更新到4.0.0

解决方法是既ActiveDirectory的还原到2.1 .0和Jwt到3.0.2,然后打F5并享受AMS 439。

install-package System.IdentityModel.Tokens.Jwt -version 3.0.2 
+0

是的,这对我有效。 – BoB 2014-12-04 23:10:38

相关问题