web-dev-qa-db-ja.com

Microsoft.AspNetCore.Antiforgeryが見つかりませんでした

Asp.net core 2.0 WebサイトをIIS 10。

私のアプリは、program.settingsファイルでISSの正しい構成を使用していることを確認しました。

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'パス: 'lib/netstandard2.0/Microsoft.AspNetCore.Antiforgery .dll 'このアセンブリは、次のターゲットマニフェストファイルを使用してアプリケーションが公開されたため、ローカルランタイムストアにあると予想されていました。aspnetcore-store-2.0.3.xml

エラーメッセージに基づいて、Microsoft.AspNetCore.Antiforgeryはデバッグ時にこのエラーを受け取らないため、公開時にバンドルされていないと推測しています。

ライブ環境に公開されたときに、アプリがMicrosoft.AspNetCore.Antiforgeryを検出できるようにするにはどうすればよいですか?

編集:これは基本的な.netコアWebサイトです。 IISを使用した展開に関する上記の変更を除き、現時点では標準プロジェクトに変更は加えられていません。

IISコマンドラインの代わりにプロジェクトを実行すると、502.5エラーメッセージが表示されます。

13
TidyDev

サーバー上の.netコアランタイムをv2.0.3に更新することで、この問題を修正できました。

この問題は次の場合に発生します

  1. .netコアランタイムのv2.0.0を実行している既存のサーバーがあります。
  2. SDKのv2.0.3をターゲットとするアプリを作成します
  3. V2.0.3をv2.0.0を実行しているサーバーに公開します

この問題は、サーバーにランタイムのv2.0.3をインストールすることで解決できます。ランタイムはこちらのMicrosoftサイトからダウンロードできます https://www.Microsoft.com/net/download/windows

18
TidyDev

このライブラリを実際に使用している場合は、*。csprojファイルに対応する明示的な参照があることを確認してください。

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

次に、PublishWithAspNetCoreTargetManifestプロパティを操作して、マニフェストの不一致に関する前述の問題を解決します。次のスレッドをチェックして、展開中に発生する可能性のある問題の詳細を確認してください。

アプリケーション依存関係マニフェスト(RhWeb.deps.json)で指定されたアセンブリが見つかりませんでした

公開アプリケーションにアセンブリがありません(関連付けられているランタイムストアがありません...)[2.0.0-preview2-005905]

HTTPエラー502.5-Microsoft.AspNetCore.Antiforgery.dll

10
Mikhail

私はこの問題を抱えていました-簡単な回避策、実際にNuGetパッケージをインストールしました(私はそれを使用していませんでした)。

Microsoft.AspNetCore.Antiforgery

公開、展開-問題を修正しました。

別のケースでは、プロジェクトを公開したときに、多くのdllが公開フォルダーに配置されていませんでした(Antiforgeryを含む)。以下は、必要なすべてのdllを追加するように公開を強制するように見えます。

Projectname.jsonファイルを編集して、PropertyGroupPublishWithAspNetCoreTargetManifest = falseが含まれるようにします。

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

上記が機能する理由を知りたいですか?

6
niico

この問題は、アンチフォージェリーが呼び出されたが、アンチフォージェリーがインストールされていない場合にも発生します。

NugetパッケージマネージャーでMicrosoft.AspNetCore.Antiforgeryをインストールすることで修正できます。

3
yafima1

リンクされたスクリーンショットのように、自己完結型のASP.NET Core 2.2アプリとしてアプリを公開する場合(インラインイメージの担当者が十分ではありません)、この問題は修正されます。

自己完結型: Screenshot

これは、公開設定を編集するときに設定できます。

1
xuye1122

私はこのソリューションで社内のWindowsサーバーでこの問題を修正しました
* 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

これをサーバーにインストールすると、エラーが解決されました。これが誰にも役立つことを願っています。

1
joakimja

Microsoft.AspNetCore.Allをv2.0.7からv2.0.8(最新)に更新し、.NET Core Runtime v2.0.7(最新)を実行していたサーバーに公開した後にこのエラーが発生しました。

Microsoft.AspNetCore.Allをv2.0.7にダウングレードし、再公開すると、すべてが機能します。

1
Window