未找到 Microsoft.AspNetCore.Antiforgery
Posted
技术标签:
【中文标题】未找到 Microsoft.AspNetCore.Antiforgery【英文标题】:Microsoft.AspNetCore.Antiforgery was not found 【发布时间】:2017-11-22 00:53:44 【问题描述】:我正在将一个 asp.net core 2.0 网站部署到 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 核心网站。除了上述为 IIS 部署所做的更改外,目前尚未对标准项目进行任何更改。
当我从 IIS 而不是命令行运行项目时,我收到 502.5 错误消息。
【问题讨论】:
试试dotnet restore
。如果这无济于事,请使用临时解决方案,只需将此 *.dll 从本地复制到部署
正如@J.Doe 提到的,试试dotnet restore
。你也介意分享你的 csproj 吗?
如果您在 Windows(服务器以外的其他地方)发布并在 Linux 中运行,请确保两个 .Net SDK 的版本相同或兼容。您可以通过dotnet --info
或dotnet --version
查看他们的版本。
【参考方案1】:
我能够通过将服务器上的 .net 核心运行时更新到 v2.0.3 来解决此问题。
如果发生此问题
-
您有一个运行 .net 核心运行时 v2.0.0 的现有服务器。
您创建了一个面向 SDK v2.0.3 的应用
您将 v2.0.3 应用发布到运行 v2.0.0 的服务器
可以通过在服务器上安装 v2.0.3 的运行时解决此问题。您可以从这里的 microsoft 站点下载运行时 https://www.microsoft.com/net/download/windows
【讨论】:
或者,您可以恢复到早期的 .NET Core Nuget 包。我必须安装 2.0.0,因为我推送的 Pivotal Cloud Foundry buildpack 是 2.0.0,而我的构建使用的是 2.0.3。 有一个“ASP.NET Core Runtime”和一个“.NET Core Runtime”。只有 ASP 版本为我解决了这个问题(v2.0.7 有效)。此外,在下载页面上,您首先必须单击“运行应用程序”按钮才能访问这些下载。 在我的情况下,我需要将 Dockerfile 中的基本映像从 aspnetcore:2.0 更改为 aspnetcore:2.0.8,因为我引用的是 Microsoft.AspNetCore.All 2.0.8,它需要 Microsoft.AspNetCore.Antiforgery > = 2.0.3.【参考方案2】:如果您实际使用此库,请确保您的 *.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
【讨论】:
添加值为 false 的 PublishWithAspNetCoreTargetManifest 属性似乎对我有用。我确实注意到发布中包含的其他文件。它似乎使应用程序完全独立?【参考方案3】:我遇到了这个问题 - 简单的解决方法,实际安装 NuGet 包(我没有使用它)。
Microsoft.AspNetCore.Antiforgery
已发布、部署 - 修复了问题。
在另一种情况下,当我发布项目时,很多 dll 都没有放在发布文件夹中 - 包括 Antiforgery。下面似乎强制发布以添加所有必需的 dll。
编辑您的 projectname.json 文件以确保 PropertyGroup
包含 PublishWithAspNetCoreTargetManifest = false
:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
有兴趣知道为什么上述方法有效吗?!
【讨论】:
谢谢!简化了我在旧 VPS 上使用不同版本的 dotnet 进行不同项目的依赖噩梦。【参考方案4】:如果调用了 Antiforgery 但未安装 Antiforgery,也会出现此问题。
可以通过 Nuget 包管理器安装 Microsoft.AspNetCore.Antiforgery 来修复。
【讨论】:
【参考方案5】:我用这个解决方案在我的内部 windowsserver 上解决了这个问题 * 去网芯https://github.com/dotnet/core/tree/master/release-notes * 转到最新版本的核心运行时 2.? * 在我的情况下下载 DotNetCore.2.0.6-WindowsHosting.exehttps://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 应用程序(我没有足够的内嵌图像代表),它将解决此问题。
自包含:
可以在编辑发布设置时进行设置。
【讨论】:
以上是关于未找到 Microsoft.AspNetCore.Antiforgery的主要内容,如果未能解决你的问题,请参考以下文章
Azure 应用服务:未找到应用程序依赖项清单 (Microsoft.AspNetCore.AzureAppServices.HostingStartup.deps.json) 中指定的程序集
InvalidOperationException:未指定密钥类型。 Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureSig
C# Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1] 执行请求时发生未处理的异常
Microsoft.AspNetCore.Routing路由
.NetCore 3.1API 无法加载文件或程序集“Microsoft.AspNetCore.Hosting.Abstractions”