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エラーメッセージが表示されます。
サーバー上の.netコアランタイムをv2.0.3に更新することで、この問題を修正できました。
この問題は次の場合に発生します
この問題は、サーバーにランタイムのv2.0.3をインストールすることで解決できます。ランタイムはこちらのMicrosoftサイトからダウンロードできます https://www.Microsoft.com/net/download/windows
このライブラリを実際に使用している場合は、*。csprojファイルに対応する明示的な参照があることを確認してください。
<PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="..." />
次に、PublishWithAspNetCoreTargetManifestプロパティを操作して、マニフェストの不一致に関する前述の問題を解決します。次のスレッドをチェックして、展開中に発生する可能性のある問題の詳細を確認してください。
アプリケーション依存関係マニフェスト(RhWeb.deps.json)で指定されたアセンブリが見つかりませんでした
公開アプリケーションにアセンブリがありません(関連付けられているランタイムストアがありません...)[2.0.0-preview2-005905]
私はこの問題を抱えていました-簡単な回避策、実際にNuGetパッケージをインストールしました(私はそれを使用していませんでした)。
Microsoft.AspNetCore.Antiforgery
公開、展開-問題を修正しました。
別のケースでは、プロジェクトを公開したときに、多くのdllが公開フォルダーに配置されていませんでした(Antiforgeryを含む)。以下は、必要なすべてのdllを追加するように公開を強制するように見えます。
Projectname.jsonファイルを編集して、PropertyGroup
にPublishWithAspNetCoreTargetManifest = false
が含まれるようにします。
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
上記が機能する理由を知りたいですか?
この問題は、アンチフォージェリーが呼び出されたが、アンチフォージェリーがインストールされていない場合にも発生します。
NugetパッケージマネージャーでMicrosoft.AspNetCore.Antiforgeryをインストールすることで修正できます。
リンクされたスクリーンショットのように、自己完結型のASP.NET Core 2.2アプリとしてアプリを公開する場合(インラインイメージの担当者が十分ではありません)、この問題は修正されます。
自己完結型:
これは、公開設定を編集するときに設定できます。
私はこのソリューションで社内の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
これをサーバーにインストールすると、エラーが解決されました。これが誰にも役立つことを願っています。
Microsoft.AspNetCore.All
をv2.0.7からv2.0.8(最新)に更新し、.NET Core Runtime v2.0.7(最新)を実行していたサーバーに公開した後にこのエラーが発生しました。
Microsoft.AspNetCore.All
をv2.0.7にダウングレードし、再公開すると、すべてが機能します。