Microsoft.AspNetCore.Antiforgery не найден
Я развертываю сайт asp.net core 2.0 для IIS 10.
Я убедился, что мое приложение использует правильную конфигурацию для ISS в файле program.settings.
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
}
И в моем файле startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<IISOptions>(options =>
{
});
services.AddMvc();
}
Однако, когда я запускаю dotnet website.dll из командной строки, я получаю следующее сообщение об ошибке, указанное в окне командной строки:
Сборка, указанная в манифесте зависимостей приложений (website.deps.json) не найден: пакет: "Microsoft.AspNetCore.Antiforgery", версия: "2.0.1" path: 'lib/netstandard2.0/Microsoft.AspNetCore.Antiforgery.dll' Эта сборка должна была находиться в локальном хранилище времени выполнения, поскольку приложение было опубликовано с использованием следующих файлов манифеста назначения: aspnetcore-магазин-2.0.3.xml
Исходя из сообщения об ошибке, я предполагаю, что Microsoft.AspNetCore.Antiforgery не поставляется в комплекте при публикации, так как я не получаю эту ошибку при отладке.
Как я могу убедиться, что мое приложение может найти Microsoft.AspNetCore.Antiforgery при публикации в живой среде?
EDIT: это базовый основной веб-сайт .net. В настоящее время никаких изменений в стандартном проекте не произошло, кроме вышеуказанных изменений для развертывания с IIS.
Когда я запускаю проект из IIS вместо командной строки, я получаю сообщение об ошибке 502.5.
Ответы
Ответ 1
Мне удалось исправить эту проблему, обновив текущую среду ядра .net на сервере до версии 2.0.
Эта проблема возникает, если
- У вас есть существующий сервер, работающий под управлением v2.0.0.Net.
- Вы создаете таргетинг приложения v2.0.3 SDK
- Вы публикуете приложение v2.0.3 на сервере под управлением v2.0.0
Проблема может быть решена путем установки v2.0.3 среды выполнения на сервере. Вы можете загрузить среду выполнения с сайта microsoft здесь https://www.microsoft.com/net/download/windows
Ответ 2
Если вы действительно используете эту библиотеку, убедитесь, что ваш *.csproj файл имеет соответствующую явную ссылку:
<PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="..." />
Затем выполните игру с свойством PublishWithAspNetCoreTargetManifest, чтобы решить вышеупомянутую проблему с несогласованным манифестом.
Ознакомьтесь со следующими темами, чтобы узнать больше о возможных проблемах при его развертывании:
Не найдена сборка, указанная в манифесте зависимостей приложений (RhWeb.deps.json)
опубликовано приложение отсутствует сборка (отсутствует хранилище времени выполнения, связанное...) [2.0.0-preview2-005905]
Ошибка HTTP 502.5 - Microsoft.AspNetCore.Antiforgery.dll
Ответ 3
У меня была эта проблема - простой обходной путь, фактически установил пакет NuGet (я не использовал его).
Microsoft.AspNetCore.Antiforgery
Опубликован, развернут - исправлена проблема.
В другом случае, когда я публиковал проект, многие dll не были помещены в папку публикации - включая Antiforgery. Ниже показано, как заставить публикацию добавить все необходимые библиотеки.
Отредактируйте файл projectname.json, чтобы PropertyGroup
содержала PublishWithAspNetCoreTargetManifest = false
:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
Интересно узнать, почему вышеупомянутое работает?!
Ответ 4
Эта проблема также возникает, если вызывается Antiforgery, но Antiforgery не установлен.
Может быть исправлено установкой Microsoft.AspNetCore.Antiforgery менеджером пакетов Nuget.
Ответ 5
Я исправил эту проблему на своем собственном Windows Server с этим решением
* Зайдите на netcore https://github.com/dotnet/core/tree/master/release-notes
* перейти к последней версии ядра времени выполнения 2.?
* скачать DotNetCore.2.0.6-WindowsHosting.exe в моем случае
https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.6-download.md#net-core-runtime-only-installation
Установите это на сервере, и ошибка была решена для меня. Надеюсь, это кому-нибудь поможет.
Ответ 6
Получил эту ошибку после обновления Microsoft.AspNetCore.All
с v2.0.7 до v2.0.8 (самое позднее на тот момент), а затем публикации на сервере, на котором работал .NET Core Runtime v2.0.7 (самое последнее на тот момент).
Понизил Microsoft.AspNetCore.All
обратно до v2.0.7, переиздан, и все работает.
Ответ 7
Если вы опубликуете приложение в виде автономных приложений ASP.NET Core 2.2 в соответствии со связанным снимком экрана (мне не хватает представителя для встроенного изображения), это исправит эту проблему.
Самостоятельно: ![Screenshot]()
Это можно установить при редактировании настроек публикации.