C# 未找到Microsoft.AspNetCore.Antiforgery
我正在将asp.net core 2.0网站部署到IIS 10 我已确保我的应用程序在program.settings文件中使用了ISS的正确配置C# 未找到Microsoft.AspNetCore.Antiforgery,c#,iis,asp.net-core-mvc,.net-core,asp.net-core-2.0,C#,Iis,Asp.net Core Mvc,.net Core,Asp.net Core 2.0,我正在将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) =>
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();
}
公共类程序
{
公共静态void Main(字符串[]args)
{
BuildWebHost(args.Run();
}
公共静态IWebHost BuildWebHost(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseContentRoot(目录.GetCurrentDirectory())
.Useii整合()
.UseStartup()
.Build();
}
在我的startup.cs文件中:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<IISOptions>(options =>
{
});
services.AddMvc();
}
public void配置服务(IServiceCollection服务)
{
配置(选项=>
{
});
services.AddMvc();
}
但是,当我从命令行运行dotnet website.dll时,我会在命令行窗口中看到以下错误消息:
应用程序依赖项清单中指定的程序集
(website.deps.json)未找到:
软件包:“Microsoft.AspNetCore.Antifforgery”,版本:“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错误消息。如果您实际使用此库,请确保*.csproj文件具有相应的显式引用:
<PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="..." />
然后,使用PublishWithAspNetCoreTargetManifest属性解决上述清单不匹配的问题。
请查看以下线程,以了解有关其部署过程中可能出现的问题的更多信息:
我可以通过将服务器上的.net核心运行时更新为v2.0.3来解决此问题 如果发生以下情况,则会出现此问题:
这个问题可以通过在服务器上安装运行时的v2.0.3来解决。您可以在此处从microsoft站点下载运行时如果调用了Antiforgery但未安装Antiforgery,也会出现此问题
可以通过Nuget软件包管理器安装Microsoft.AspNetCore.Antiforgery来修复此问题。我使用此解决方案在我的内部Windows Server上修复了此问题
*转到netcore
*转到core runtime 2的最新版本。?
*在我的情况下下载DotNetCore.2.0.6-WindowsHosting.exe
将此安装到服务器上,错误已为我解决。希望这对任何人都有帮助。我遇到了这个问题-简单的解决方法,实际安装NuGet软件包(我没有使用它) Microsoft.AspNetCore.Antiforgery 已发布,已部署-修复了此问题 在另一个例子中,当我发布这个项目时,很多DLL并没有放在发布文件夹中,包括Antiforgery。下面的命令似乎强制发布添加所有必需的DLL 编辑projectname.json文件以确保
PropertyGroup
包含PublishWithAspNetCoreTargetManifest=false
:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
netcoreapp2.0
假的
有兴趣知道为什么上面的工作 将Microsoft.AspNetCore.All从v2.0.7更新到v2.0.8(最新版本),然后发布到运行.NET Core Runtime v2.0.7(最新版本)的服务器后,出现此错误
降级
Microsoft.AspNetCore.All
回到v2.0.7,重新发布,一切正常。如果按照链接屏幕截图将应用程序发布为独立的ASP.NET Core 2.2应用程序(我没有足够的内联图像代表),它将修复此问题
自给自足的:
这可以在编辑发布设置时设置。请尝试
dotnet restore
。如果这无助于使用临时解决方案,只需将此*.dll从本地复制到deployAs@J.Doe,请尝试dotnet还原
。您是否介意共享您的csproj?如果您在Windows(服务器以外的其他地方)中发布并在Linux中运行,请确保两个.Net SDK的版本相同或兼容。您可以使用dotnet--info
或dotnet--version
检查它们的版本。或者,您可以恢复到早期的.NET核心Nuget包。我必须安装2.0.0,因为我正在推动的关键Cloud Foundry buildpack是2.0.0,而我的构建使用的是2.0.3。有一个“ASP.NET核心运行时”和一个“.NET核心运行时”。只有ASP版本为我解决了这个问题(v2.0.7起作用)。此外,在下载页面上,您首先必须单击“运行应用程序”按钮,访问这些下载。在我的情况下,我需要将Dockerfile中的基本映像从aspnetcore:2.0更改为aspnetcore:2.0.8,因为我引用的是Microsoft.aspnetcore.All 2.0.8,它要求Microsoft.aspnetcore.Antiforgery>=2.0.3。添加PublishWithAspNetCoreTargetManifest属性的值为false似乎对我有效。我确实注意到了发布中包含的附加文件。它似乎使应用程序完全独立?谢谢!简化了依赖性噩梦,在旧VPS上使用不同版本的dotnet进行不同的项目。