找不到Microsoft.AspNetCore.Antiforgery

Tid*_*Dev 14 c# iis asp.net-core-mvc .net-core asp.net-core-2.0

我正在将IIS.net核心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();
}
Run Code Online (Sandbox Code Playgroud)

在我的startup.cs文件中:

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<IISOptions>(options =>
        {
        });
        services.AddMvc();
    }
Run Code Online (Sandbox Code Playgroud)

然而,当我从命令行运行dotnet website.dll时,我得到命令行窗口中显示的以下错误消息:

未找到应用程序依赖项清单(website.deps.json)中指定的程序集:package:'Microsoft.AspNetCore.Antiforgery',version:'2.0.1'path:'lib/netstandard2.0/Microsoft.AspNetCore.Antiforgery .dll'当使用以下目标清单文件发布应用程序时,此程序集应位于本地运行时存储中:aspnetcore-store-2.0.3.xml

根据错误消息,我猜测Microsoft.AspNetCore.Antiforgery在我发布时没有被捆绑,因为我在调试时没有收到此错误.

如何确保我的应用程序在发布到实时环境时能够找到Microsoft.AspNetCore.Antiforgery?

编辑:这是一个基本的.net核心网站.除了使用IIS进行部署的上述更改之外,此时未对标准项目进行任何更改.

当我从IIS而不是命令行运行项目时,我收到502.5错误消息.

Tid*_*Dev 18

我能够通过将服务器上的.net核心运行时更新到v2.0.3来解决此问题.

如果出现此问题

  1. 您有一台运行.net核心运行时的v2.0.0的现有服务器.
  2. 您创建了一个针对SDK v2.0.3的应用
  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. (5认同)

Mik*_*ail 10

如果您实际使用此库,请确保*.csproj文件具有相应的显式引用:

<PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="..." />
Run Code Online (Sandbox Code Playgroud)

然后,使用PublishWithAspNetCoreTargetManifest属性来解决上述问题,并使用不匹配的清单.查看以下主题以了解有关部署时可能出现的问题的更多信息:

未找到应用程序依赖项清单(RhWeb.deps.json)中指定的程序集

已发布的应用程序缺少程序集(缺少运行时存储关联...)[2.0.0-preview2-005905]

HTTP错误502.5 - Microsoft.AspNetCore.Antiforgery.dll


nii*_*ico 6

我有这个问题 - 简单的解决方法,实际安装NuGet包(我没有使用它).

Microsoft.AspNetCore.Antiforgery

已发布,已部署 - 修复了该问题.

在另一个案例中,当我发布该项目时,许多dll没有放在发布文件夹中 - 包括Antiforgery.以下似乎强制发布添加所有必需的dll.

编辑projectname.json文件以确保PropertyGroup包含PublishWithAspNetCoreTargetManifest = false:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

有兴趣知道为什么上面的作品?!