web-dev-qa-db-fra.com

Règles d'héritage sec violées par le type: 'System.Net.Http.WebRequestHandler'.

J'essaie d'accéder aux données Active Directory via l'API graphique. Je reçois l'erreur suivante lors de l'exécution de l'application. 

Description: Une exception non gérée s'est produite lors de l'exécution de la requête Web en cours. Consultez la trace de la pile pour plus d’informations sur l’erreur et son origine dans le code.

Détails d'exception: "System.TypeLoadException: Les règles de sécurité d'héritage sont violées par le type: 'System.Net.Http.WebRequestHandler'. Les types dérivés doivent correspondre à l'accessibilité du type de base ou être moins accessibles . "

Erreur source:

Une exception non gérée a été générée lors de l'exécution de la requête Web en cours. Les informations concernant l'origine et l'emplacement de l'exception peuvent être identifiées à l'aide de la trace de pile d'exceptions ci-dessous.

Trace de la pile:

[TypeLoadException: Inheritance security rules violated by type: 'System.Net.Http.WebRequestHandler'. Derived types must either match the security accessibility of the base type or be less accessible.]
   Microsoft.Owin.Security.OpenIdConnect.OpenIdConnectAuthenticationMiddleware.ResolveHttpMessageHandler(OpenIdConnectAuthenticationOptions options) +0
   Microsoft.Owin.Security.OpenIdConnect.OpenIdConnectAuthenticationMiddleware..ctor(OwinMiddleware next, IAppBuilder app, OpenIdConnectAuthenticationOptions options) +996
   lambda_method(Closure , OwinMiddleware , IAppBuilder , OpenIdConnectAuthenticationOptions ) +54

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0
   System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +92
   System.Delegate.DynamicInvokeImpl(Object[] args) +117
   System.Delegate.DynamicInvoke(Object[] args) +12
   Microsoft.Owin.Builder.AppBuilder.BuildInternal(Type signature) +236
   Microsoft.Owin.Builder.AppBuilder.Build(Type returnType) +21
   Microsoft.Owin.Host.SystemWeb.OwinAppContext.Initialize(Action`1 startup) +565
   Microsoft.Owin.Host.SystemWeb.OwinBuilder.Build(Action`1 startup) +58
   Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint() +95
   System.Threading.LazyInitializer.EnsureInitializedCore(T& target, Boolean& initialized, Object& syncLock, Func`1 valueFactory) +115
   System.Threading.LazyInitializer.EnsureInitialized(T& target, Boolean& initialized, Object& syncLock, Func`1 valueFactory) +72
   Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init(HttpApplication context) +96
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +523
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +176
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +364
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +303

[HttpException (0x80004005): Exception has been thrown by the target of an invocation.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +770
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +195


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1069.1 

Comme je suis débutant, je suis frappé par l'erreur. Est-ce que quelqu'un pourrait me dire ce qu'il faut faire pour surmonter cette erreur?

21
user6606680

Il semble que le bogue soit maintenant fermé sur GitHub ( https://github.com/dotnet/corefx/issues/11100 ) et une nouvelle version de System.Net.Http a été publiée.

J'ai pu mettre à jour System.Net.Http vers la version 4.3.1 avec NuGet et le problème a été résolu.

36
infl3x

Cela a fonctionné pour moi: System.Net.Http v4.1.0.0 semble avoir quelques problèmes. Dans web.config ou app.config, pointez sur l'ancienne version (v4.0.0.0)

<runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
     ...
        <dependentAssembly>
            <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.0.0.0" />
        </dependentAssembly>

Notez que lorsque vous installez un nouveau package NuGet non associé, les modifications de bindingRedirect peuvent être écrasées et vous devez redéfinir la liaison avec 4.0.0.0.

25
SturmUndDrang

J'ai trouvé que la mise à niveau de System.Net.Http via Nuget le corrige. 

3
Jim

J'ai résolu avec downcode System.Net.Http de 4.3.0 à 4.0.0 avec Visual Studio NuGet Package Manager

1

J'ai rencontré le problème lorsque je travaillais avec une application Web principale .net (.net framework). J'ai essayé tout ce que j'ai lu, mais seule la migration vers .net 4.5.1 à partir de .net 4.6.1 m'a aidée.

0
user1793358