C# 未找到Microsoft.AspNetCore.Antiforgery

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) =>

我正在将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();
}
公共类程序
{
公共静态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来解决此问题

如果发生以下情况,则会出现此问题:

  • 现有服务器正在运行.net核心运行时的v2.0.0
  • 您创建了一个针对SDK v2.0.3的应用程序
  • 将v2.0.3应用程序发布到运行v2.0.0的服务器

  • 这个问题可以通过在服务器上安装运行时的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进行不同的项目。