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

Это можно установить при редактировании настроек публикации.