#asp.net-core #asp.net-core-mvc #.net-core #asp.net-core-1.0 #libuv
#asp.net-core #asp.net-core-mvc #.net-core #asp.net-core-1.0 #libuv
Вопрос:
Я получаю сообщение об ошибке при публикации моего .NET Core Asp.NET Веб-приложение на Windows Server 2008 R2. Это связано с libuv:
Unhandled Exception: System.AggregateException: One or more errors occurred. ---> System.DllNotFoundException: Unable to load DLL 'libuv': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.NativeMethods.uv_loop_size()
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.loop_size()
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvLoopHandle.Init(Libuv uv)
at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.ThreadStart(Object parameter)
Странно то, что когда я публикую локально на своем компьютере для разработки, я вижу libuv.dll в папке публикации. И приложение работает на моем локальном компьютере через IIS.
project.json framework:
"frameworks": {
"net461": {}
},
Используя эти команды:
dotnet restore
dotnet build
dotnet publish --configuration Release --runtime active
Есть идеи, как я могу это исправить?
Комментарии:
1. используете ли вы окончательную версию asp.net-core? Швы, подобные этой проблеме, были исправлены в выпуске RC2 — github.com/aspnet/KestrelHttpServer/issues/627
2. Проблема с этим вопросом заключается в том, что заголовок заявляет, что он предназначен для core, но файл project.json показывает иное.
Ответ №1:
Я нашел причину этой ошибки, по крайней мере, то, что вызывало ее в моем случае сейчас, 10 месяцев спустя.
У меня был более старый проект web-api, созданный с помощью .net core 1.1, и в *.csproj
файле было найдено следующее PropertyGroup
:
<PropertyGroup>
<TargetFramework>net47</TargetFramework>
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
</PropertyGroup>
В более новом проекте, который я создал несколько дней назад, но с более новым шаблоном и .NET Core 2.0, это выглядело так:
<PropertyGroup>
<TargetFramework>net47</TargetFramework>
</PropertyGroup>
Здесь RuntimeIdentifier
отсутствовал. Я добавил его в новый проект, и ошибка исчезла. Теперь сервер запускается, как и ожидалось.
Ответ №2:
У меня была такая же проблема. Я решаю эту проблему, удаляя эти строки из csproj
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
<Reference Include="System.ServiceModel" />
</ItemGroup>