如何正确使用 ASP.NET Core 共享框架或如何单独使用其程序集?

2023-12-22

情况

在我们的应用程序中,我们有一个WPF客户端 and an ASP.NET Core 服务器,两者都使用.NET 5.

我们将所有 DLL 存储在serverclient当用户登录时从服务器下载所有必需的 DLL。最初,client独立于任何第三方库、我们的其他项目等,这允许我们在某些情况下下载client作为 DLL(使用另一个应用程序——我将其称为loader– 专门为此目的而设计),加载client using Assembly.Load(binaryData)并执行登录方法。

边注: 迄今为止被称为client实际上只是一个简单的应用程序,它对用户进行身份验证并下载实际的 DLLclient它由多个程序集组成,允许我们处理服务器上的数据。不过,为了简单起见,我不会区分它们,因为它们都站在客户端。

最近,我使用基于 OpenID Connect 实现了单点登录NetCoreConsoleClient 示例 https://github.com/IdentityModel/IdentityModel.OidcClient.Samples/tree/main/NetCoreConsoleClient/src/NetCoreConsoleClient from 身份模型 https://github.com/IdentityModel因此,对其他程序集的一些引用已添加到client。现在,为了使 SSO 正常工作,loader必须将这些程序集与client.

问题

目前,client使用一些来自的组件微软.AspNetCore.App共享框架。根据这个问题和答案 https://stackoverflow.com/questions/64478618/what-frameworkreference-include-microsoft-aspnetcore-app-is-actually-do-in由于安装了运行时,它应该可以在我的机器上运行 - 该框架存在于我的机器上:C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\5.0.0。但是,当我尝试使用登录时client通过下载loader我越来越System.IO.FileNotFoundException:'无法加载文件或程序集'Microsoft.AspNetCore.Hosting,Version=5.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60'。该系统找不到指定的文件。'

另外,如果我从上面提到的路径获取 DLL 并尝试加载微软.AspNetCore.Hosting手动组装,使用Assembly.Load(binaryData), 我越来越系统.BadImageFormatException:'无法加载文件或程序集'Microsoft.AspNetCore.Hosting,Version=5.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60'。不应加载参考程序集来执行。它们只能在仅反射加载器上下文中加载。 (0x80131058)'

我尝试上网搜索,发现可能是32位/64位架构冲突导致的。我尝试创建一个简单的演示应用程序,尝试在架构之间进行更改,但没有成功。

我还发现了一些关于手动加载程序集时遇到的异常的提及,但它们似乎都与我的具体情况无关。

问题

我使用的是微软.AspNetCore.App共享框架错误?如何正确使用呢?

有没有办法实际使用微软.AspNetCore.Hosting和其他组件微软.AspNetCore.App作为常规 DLL,以便我可以使用加载它们Assembly.Load(binaryData)?


最终,我们已经能够弄清楚了。

The client参考微软.AspNetCore.App and 微软.Windows桌面.应用程序loader也必须引用它们,因为clientDLL 是使用加载的Assembly.Load(binaryData)在里面。

这是我完全错过的事情,但很容易修复,只需将以下标记添加到loader项目文件:

<ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
    <FrameworkReference Include="Microsoft.WindowsDesktop.App" />
</ItemGroup>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确使用 ASP.NET Core 共享框架或如何单独使用其程序集? 的相关文章

  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 打印“X”个字符数与“X”字符串长度的所有可能组合(暴力破解)

    我正在尝试编写一个单词组合生成器 我的意思是打印 X 个字符数与 X 字符串长度的所有可能组合 首先 我需要说的是 我在 StackOverFlow 中看到了一个关于这个问题的问题 其中有很多单词生成器的答案来执行此操作 在不同的语言上 但
  • 处理右值时的 insert 与 emplace

    std string myString std unordered set
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 假装 .NET 字符串是值类型

    在 NET 中 字符串是不可变的 并且是引用类型变量 这通常会让新的 NET 开发人员感到惊讶 因为他们的行为可能会将它们误认为是值类型对象 然而 除了使用实践StringBuilder对于长连接 尤其是 在循环中 在实践中是否有任何理由需
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 无法通过docker连接到ASP.NET Core

    大家好 人们已经关注这个问题太久了 需要一些帮助 我制作了一个 ASP NET Core 网站 没有什么特别的 只是 VS 2017 v 1 1 附带的模板 我使用 dotnet core cli 发布网站并使用此 dockerfile 构
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐