带有 IIS 的 Kestrel - 运行时缺少 libuv.dll

2023-12-25

我们正在设置一个现有的 Web API 服务器,以便与现有的 API 一起为站点提供服务。我一直在松散地关注本文 http://miniml.ist/dotnet/how-to-serve-a-static-site-plus-a-web-api-in-aspnetcore/.

我的 Global.asax.cs 如下所示:

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        AutoMapperConfig.RegisterMappings();

        var host = new WebHostBuilder()
           .UseKestrel()
           .UseWebRoot("wwwroot")
           .UseIISIntegration()
           .UseStartup<Startup>()
           .Build();

        host.Run();
    }
}

和 Startup.cs:

public partial class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseDefaultFiles();
        app.UseStaticFiles();
    }
}

当我运行该项目时,我收到错误

无法加载 DLL“libuv”:找不到指定的模块。 (HRESULT 异常:0x8007007E)

libuv 是 Kestrel 的依赖项。如果我手动将其从 packages 文件夹复制到 bin 文件夹,它就可以工作。这似乎是有道理的GitHub 问题评论 https://github.com/aspnet/KestrelHttpServer/issues/735#issuecomment-247220516。现在 project.json 已被移走,我怎样才能让它自动复制?

有些人认为它不知道是否使用 32 位或 64 位版本的 libuv,因为项目属性中的 Platform 设置为 Any CPU。我尝试在解决方案和项目设置中将其设置为 x64,但问题仍然存在。

如何让libuv.dll自动直接复制到build目录?

我不考虑将文件包含在项目中(而不是放在包文件夹中)并将其设置为复制到输出目录,这才是真正的解决方案,而只是一种解决方法。我希望找到解决方案,而不是解决方法。


我之前在迁移项目时也遇到过类似的问题。对于不匹配的项目,Visual Studio 可能会出现很多错误行为。

简单答案:您需要将项目更改为 MSBuild/csproj 格式。

首先,如果您尝试在解决方案中使用 .NET Core,请在 Visual Studio 中右键单击您的项目,然后如果你没有看到Edit xxxxxx.csproj那么您可能会遇到与上面报告的问题类似的问题。

基本上,.NET Core 项目模板在编译项目时使用不同的工具。

下面的解决方案是解决几乎所有与尝试以 .NET Core 为目标但希望使用其他框架的库的项目有关的问题的通用方法。 (到目前为止)还没有一个好的工具来解决这个问题,所以你将不得不进入手动模式。


让我们开始吧。

解决方案非常简单(但有点乏味)。

步骤 1:使用新的 MSBuild/csproj 格式创建一个新项目

创建一个新项目,并选择“.NET Core”。

在几乎所有情况下,您可能希望避免使用 ASP.NET Core Web 应用程序模板,但这需要另外讨论。

第 2 步:瞄准正确的框架

右键单击该项目并选择Edit xxxxxx.csproj

<PropertyGroup>
    <TargetFramework>net452</TargetFramework>
    <!--you will also probably want to note that you need these for a console app -->
    <OutputType>Exe</OutputType>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
</PropertyGroup>

选择您想要定位的框架,并确保它受支持(这里有一个表格)。
我用过net452以上面的代码片段为例。您可以了解更多有关在此命名 https://learn.microsoft.com/en-us/nuget/schema/target-frameworks.

步骤 3. 对所有项目重复此操作。

您必须对解决方案中的每个项目执行此操作,以防止 Visual Studio 出现意外行为。

网上关于如何让 ASP.NET Core 与旧框架良好配合的信息确实不多。希望这会对您有所帮助。我希望我自己能早点得到这个建议。

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

带有 IIS 的 Kestrel - 运行时缺少 libuv.dll 的相关文章

随机推荐

  • Log4J动态创建日志文件

    我已在每个进程运行时成功创建了日志 我现在遇到的问题是 任何被调用的不是当前正在运行的进程的子进程的包都不会将其日志写入我的文件 例如 我创建一个名为 running log 的新日志文件 正在运行的进程是 com me foo 该类内部调
  • 如何从数据库中按类别显示数据?

    因此 我的网站允许用户创建联系人列表 现在我添加了用户命名的类别 我当前正在使用从 SQL 查询生成的关联数组的 while 循环来显示联系人列表 所以它看起来像这样 Contacts Contact 1 Contact 2 Contact
  • 错误:此类与关键项目ToolBar 的键值编码不兼容? [复制]

    这个问题在这里已经有答案了 嘿 我无法弄清楚我遇到的错误 我的应用程序正在运行 然后我不确定我做了什么 但它现在无法打开 而是收到此错误 Terminating app due to uncaught exception NSUnknown
  • 无法在 Docker-Driver Windows 10 上访问 Minikube(v1.18.1) Ingress

    我的问题与this https stackoverflow com questions 66275458 could not access kubernetes ingress in browser on windows home with
  • 使用 PHP(或其他语言)流式传输数据(例如音乐)

    多年来 我一直在研究如何从我的计算机创建音乐流 我见过一些程序 但我见过的任何有用的东西都仅限于 Windows 我使用 Mac 最终 我产生了兴趣how流工作 有什么办法可以创建我的own流 可能使用套接字函数PHP 有没有PHP图书馆为
  • 如何在nhibernate中使用PK删除对象?

    如何删除对象而不先从数据库中获取它 在另一个 ORM 中 我可以这样做 session Delete
  • mojolicious 引用的存储变量并不总是定义的

    我仍在学习 mojolicious 和 MVC 框架 所以这可能是一个问题 我认为这个问题是错误的 所以如果我愿意 请建议一种更好的方法来执行以下操作 我有一条路线 route param 其中 param 有时被定义 有时则没有 我尝试在
  • 为什么“--force-recreate”不重建我的 docker mysql 映像?

    我创建了一个 docker MySql 5 7 映像 然后想更改几个名称 我的 docker compose yml 文件最终像这样 version 3 3 services db image mysql 5 7 restart alway
  • 未找到 osx sys/io.h

    我想在 os x 下使用 cc 编译为 linux 开发的 c 程序 它包括标头 sys io h 编译的时候报错说找不到这个文件 os x下不是有sys io h头文件吗 任何帮助将非常感激 Thanks Include
  • 更改flutter应用程序图标的背景颜色

    我想将背景图标更改为 fe6017 I use flutter launcher icons set adaptive icon background fe6017 但这不起作用 我也尝试调整图像大小 但它总是收缩并放置white我的图像周
  • 如何使用JW Player播放rtmp流?

    我想知道如何使用 JW Player 流式传输 RTMP 我刚刚开始 嵌入没有帮助 因此如果有人可以分享适合他的代码 将会有所帮助 我们这里有一个指南 http www longtailvideo com support jw player
  • jqgrid 获取所有网格列名称

    有没有办法获取网格的所有列名称 您可以使用以下方式获取列名称 var columnNames list 0 p colNames or var columnNames list jqGrid getGridParam colNames 唯一
  • 给定日期范围内的每日活跃用户数

    我需要根据开始日期和结束日期查找每日活跃用户总数 报名表 id registration no start date end date 1 1000 2014 12 01 2014 12 03 2 1001 2014 12 01 2014
  • PHP 中的“贪婪标记解析”是什么?

    PHP 中的 贪婪标记解析 是什么 我在 Codeigniter 指南中找到了这一点 除非需要解析变量 否则始终使用单引号字符串 并且在确实需要解析变量的情况下 请使用大括号来防止贪婪标记解析 我的字符串 foo 带有良好解释的答案会有所帮
  • React 和 babel 中的可选链接运算符

    在我的项目中我配置 babel presets react es2015 stage 1 transform optional chaining plugins transform runtime 这是我的devDependencies i
  • 如何一次运行多种语言的 tesseract?

    我必须分析包含英语和日语文本的图像 当我默认运行 tesseract 时 l eng 一些日语字符丢失了 否则 如果我用日语运行 tesseract l jpn 一些英文字符丢失 例如电子邮件 如何运行一个同时识别英语和日语字符的进程 从
  • dlopen 与链接开销

    假设我有一个库 foo so 当构建我的二进制文件 需要这个库 时 我可以 1 链接 foo so 或者 2 在程序源代码中 dlopen 这个库 然后调用这个库提供的函数 当我从库中调用函数时 1 和 2 之间有性能差异吗 请注意 我知道
  • 为什么 VB 中的 lambda 表达式与 C# 中不同?

    我刚刚在 NHibernate 中遇到了一个错误 该错误恰好已经被提出 https nhibernate jira com browse NH 2763 https nhibernate jira com browse NH 2763 我不
  • 将 duff 的设备从 C 移植到 JavaScript

    我有这种 Duff 的 C 语言设备 它工作正常 将文本格式设置为金钱 include
  • 带有 IIS 的 Kestrel - 运行时缺少 libuv.dll

    我们正在设置一个现有的 Web API 服务器 以便与现有的 API 一起为站点提供服务 我一直在松散地关注本文 http miniml ist dotnet how to serve a static site plus a web ap