首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用AntiForgery函数时发生AssemblyResolve错误

调用AntiForgery函数时发生AssemblyResolve错误
EN

Stack Overflow用户
提问于 2022-07-01 13:08:32
回答 1查看 115关注 0票数 2

我将自己的自定义加载器添加到AssemblyResolve中,以便在.net库中加载一些嵌入式资源;

代码语言:javascript
复制
AppDomain.CurrentDomain.AssemblyResolve += (sender, e) => { return Domain.Assemblies.LoadResource(e.Name, System.Reflection.Assembly.GetExecutingAssembly()); };
代码语言:javascript
复制
        public static System.Reflection.Assembly LoadResource(string fileName, System.Reflection.Assembly assembly)
        {
            fileName = assembly.GetName().Name + "." + fileName.Split(',')[0] + ".dll";
            var resFilestream = assembly.GetManifestResourceStream(fileName);
            byte[] ba = new byte[resFilestream.Length];
            resFilestream.Read(ba, 0, ba.Length);
            var byteArray = ba;
            resFilestream.Close();
            resFilestream.Dispose();
            return System.Reflection.Assembly.Load(byteArray);
        }

这在许多不同的环境(Winforms、Azure应用程序/webjobs/函数)中都很好,但是当我试图在asp.net(4.7.2) MVC站点中执行这段代码时,它破坏了防伪吗?此问题似乎与未正确加载DLL有关,并导致三个单独的错误。

代码语言:javascript
复制
TypeInitializationException: The type initializer for 'System.Web.Helpers.Claims.ClaimsIdentityConverter' threw an exception.
代码语言:javascript
复制
FileLoadException: Could not load file or assembly 'Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Invalid pointer (Exception from HRESULT: 0x80004003 (E_POINTER))
代码语言:javascript
复制
NullReferenceException: Object reference not set to an instance of an object.

如果删除在程序集加载dll中初始化类的对象,则站点工作时没有错误。如果我把它放回去,它就破了。我还尝试将代码从global.asax移动到内联c#,但一旦运行它,下一次加载带有伪造令牌的页面将以同样的方式出错。

在运行Fusion++以检查DLL加载后,我可以看到,在这两种情况下,错误的DLL实际上都有完全相同的加载失败(相当一般的“无法找到程序集”)。但是,只有当我加载我的DLL时,它才会显示为异常。

EN

回答 1

Stack Overflow用户

发布于 2022-07-21 12:20:35

问题不在于您的代码,而是这个依赖的Microsoft.IdentityModel:要在Windows环境中存在这种依赖关系和消费的可能性,很可能需要在GAC (全局程序集缓存)上安装dll和依赖项;如果Microsoft.IdentityModel不存在于GAC文件夹中,则代码将返回错误。

可以使用Visual安装Windows标识基础3.5,也可以从特性安装Windows Foundation3.5。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72829781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档