wake-up-neo.com

Microsoft.AspNetCore.Antiforgery wurde nicht gefunden

Ich stelle eine asp.net Core 2.0-Website unter IIS 10 bereit.

Ich habe sichergestellt, dass meine App die richtige Konfiguration für ISS in der Datei program.settings verwendet.

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();
}

Und in meiner startup.cs-Datei:

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<IISOptions>(options =>
        {
        });
        services.AddMvc();
    }

Wenn ich jedoch dotnet website.dll über die Befehlszeile ausführe, wird die folgende Fehlermeldung im Befehlszeilenfenster angezeigt:

Eine im Anwendungsabhängigkeitsmanifest (website.deps.json) angegebene Assembly wurde nicht gefunden: Paket: 'Microsoft.AspNetCore.Antiforgery', Version: '2.0.1' Pfad: 'lib/netstandard2.0/Microsoft.AspNetCore.Antiforgery .dll 'Es wurde erwartet, dass sich diese Assembly im lokalen Laufzeitspeicher befindet, da die Anwendung unter Verwendung der folgenden Zielmanifestdateien veröffentlicht wurde: aspnetcore-store-2.0.3.xml

Aufgrund der Fehlermeldung schätze ich, dass Microsoft.AspNetCore.Antiforgery beim Veröffentlichen nicht gebündelt wird, da dieser Fehler beim Debuggen nicht angezeigt wird.

Wie kann ich sicherstellen, dass meine App Microsoft.AspNetCore.Antiforgery findet, wenn sie in einer Live-Umgebung veröffentlicht wird?

BEARBEITEN: Dies ist eine grundlegende .net-Kernwebsite. Abgesehen von den obigen Änderungen für die Bereitstellung mit IIS wurden zu diesem Zeitpunkt keine Änderungen am Standardprojekt vorgenommen.

Wenn ich das Projekt über IIS anstelle der Befehlszeile ausführe, wird eine 502.5-Fehlermeldung angezeigt.

13
TidyDev

Ich konnte dieses Problem beheben, indem ich die .net-Kernlaufzeit auf dem Server auf v2.0.3 aktualisierte.

Dieses Problem tritt auf, wenn

  1. Sie haben einen vorhandenen Server, auf dem Version 2.0.0 der .NET-Kernlaufzeit ausgeführt wird.
  2. Sie erstellen eine App, die auf Version 2.0.3 des SDK abzielt
  3. Sie veröffentlichen die v2.0.3-App auf einem Server, auf dem v2.0.0 ausgeführt wird

Das Problem kann behoben werden, indem Version 2.0.3 der Laufzeitumgebung auf dem Server installiert wird. Sie können die Laufzeit von der Microsoft-Website hier herunterladen https://www.Microsoft.com/net/download/windows

18
TidyDev

Wenn Sie diese Bibliothek tatsächlich verwenden, stellen Sie sicher, dass Ihre * .csproj-Datei den entsprechenden expliziten Verweis enthält:

<PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="..." />

Spielen Sie dann mit der PublishWithAspNetCoreTargetManifest -Eigenschaft, um das oben genannte Problem mit einem nicht übereinstimmenden Manifest zu beheben. In den folgenden Threads erfahren Sie mehr über mögliche Probleme während der Bereitstellung:

Eine im Anwendungsabhängigkeitsmanifest (RhWeb.deps.json) angegebene Assembly wurde nicht gefunden

veröffentlichte Anwendung fehlt Assembly (fehlender Laufzeitspeicher zugeordnet ...) [2.0.0-preview2-005905]

HTTP-Fehler 502.5 - Microsoft.AspNetCore.Antiforgery.dll

10
Mikhail

Ich hatte dieses Problem - einfache Problemumgehung, tatsächlich das NuGet-Paket installieren (ich habe es nicht verwendet).

Microsoft.AspNetCore.Antiforgery

Veröffentlicht, bereitgestellt - Problem behoben.

In einem anderen Fall, als ich das Projekt veröffentlichte, wurden viele der DLLs nicht im Veröffentlichungsordner abgelegt - einschließlich Antiforgery. Das Folgende scheint das Veröffentlichen zu erzwingen, um alle erforderlichen DLLs hinzuzufügen.

Bearbeiten Sie die Datei projectname.json, um sicherzustellen, dass PropertyGroupPublishWithAspNetCoreTargetManifest = false Enthält:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>

Interessiert zu wissen, warum das oben genannte funktioniert ?!

6
niico

Dieses Problem tritt auch auf, wenn Antiforgery aufgerufen wird, Antiforgery jedoch nicht installiert ist.

Kann behoben werden, indem Microsoft.AspNetCore.Antiforgery von Nuget Package Manager installiert wird.

3
yafima1

Wenn Sie die App als eigenständige ASP.NET Core 2.2-Apps gemäß dem verknüpften Screenshot veröffentlichen (ich habe nicht genügend Repräsentanten für Inline-Bilder), wird dieses Problem behoben.

In sich geschlossen: Screenshot

Dies kann festgelegt werden, wenn Sie Ihre Veröffentlichungseinstellungen bearbeiten.

1
xuye1122

Ich habe dieses Problem auf meinem hauseigenen Windows-Server mit dieser Lösung behoben
* gehe zu netcore https://github.com/dotnet/core/tree/master/release-notes
* Gehe zur neuesten Version der Core Runtime 2.?
* in meinem Fall DotNetCore.2.0.6-WindowsHosting.exe herunterladen
https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.6-download.md#net-core-runtime-only-installation

Installieren Sie dies auf dem Server und der Fehler wurde für mich behoben. Hoffe das hilft jedem.

1
joakimja

Erhielt diesen Fehler nach dem Aktualisieren von Microsoft.AspNetCore.All von v2.0.7 auf v2.0.8 (jeweils aktuell) und anschließend auf einem Server veröffentlichen, auf dem .NET Core Runtime v2.0.7 (jeweils aktuell) ausgeführt wurde.

Herabgestuftes Microsoft.AspNetCore.All zurück zu v2.0.7, neu veröffentlicht und alles funktioniert.

1
Window