2017-11-22 7 views
3

私はIIS 10Microsoft.AspNetCore.Antiforgeryは

にasp.netコア2.0のWebサイトを展開しています、私は私のアプリが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を検出できるようにするにはどうすればよいですか?

EDIT:これは基本的な.netコアのWebサイトです。 IISでの展開の上記の変更を除いて、この時点で標準プロジェクトに変更はありませんでした。

コマンドラインではなくIISからプロジェクトを実行すると、502.5エラーメッセージが表示されます。

+2

'dotnet restore'を試してみてください。これが一時的な解決策を使用するのに役立たず、ローカルからこの* .dllをコピーして展開するには –

+1

@ J.Doeが述べたように、 'dotnet restore'を試してみてください。あなたのcsprojを共有してもいいですか? –

+1

Windows(他のサーバー以外の場所)に公開してLinuxで実行する場合は、両方の.Net SDKのバージョンが同じか互換性があることを確認してください。 'dotnet --info'や' dotnet --version'でバージョンを確認できます。 – Babak

答えて

4

私は上の.NETコアランタイムを更新することでこの問題を解決することができましたサーバーをv2.0.3にアップグレードします。

あなたは.NETのコアランタイムのV2.0.0を実行している既存のサーバーを持っている

  1. 場合、この問題が発生します。
  2. SDKのv2.0.3をターゲットとするアプリを作成する
  3. v2.0.3アプリをv2.0を実行するサーバーに公開します。0

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

+1

また、以前の.NET Core Nugetパッケージに戻すこともできます。私が2.0.0をインストールしなければならなかったのは、Pivo​​tal Cloud Foundryのビルドパックが2.0.0で、ビルドが2.0.3だったからです。 –

3

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

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

次に、不一致で上記の問題を解決するためにPublishWithAspNetCoreTargetManifestプロパティと遊びます現れます。 にその展開しながら、可能性の問題についての詳細を学ぶために、次のトレッドをチェックアウト:

An assembly specified in the application dependencies manifest (RhWeb.deps.json) was not found

published application is missing assembly (missing runtime store associated ...) [2.0.0-preview2-005905]

HTTP Error 502.5 - Microsoft.AspNetCore.Antiforgery.dll

+0

値がfalseのPublishWithAspNetCoreTargetManifestプロパティを追加すると、私のために動作するように見えます。私はパブリッシュに含まれている追加のファイルに気付きました。アプリケーションが完全に自己完結しているように見えますか? – gregsonian

関連する問題