找不到方法 app.UseStaticFiles()

Can't find method app.UseStaticFiles()

我正在关注 this guide,在第 4 步中,系统要求我在 project.json 文件中添加三行(我做了并且然后 运行 dotnet restore 得到很多更新的包。

当我在 Configure 方法中输入三行时,我在所有这些行上都看到了红线。无法识别方法,未提供智能感知等。

我还注意到在指南的示例中,方法签名只采用 IApplicationBuilder 的一个参数,而我生成的那个(使用 yo aspnet 命令)看起来像这样。

Configure(IApplicationBuilder, IHostingEnvironment, ILoggerFactory);

我不确定如何解决它。我的猜测是一些东西的新版本正在开发中(Yo、Generators、Core 等),但我不完全确定。

我还发现 this blog 方法签名与我得到的签名相似。但是,它的作者提出了对我不起作用的相同语法。我猜这是引用错误库的问题。我该如何处理这个问题?

从链接教程中的屏幕截图来看,它是关于 ASP.NET Core RC1(当时称为 ASP.NET 5 r1-final)的。您可以在包和名称空间名称上轻松识别这一点。 Microsoft.AspNet.* 一直使用到 rc1。

从 RC2 开始,这些包被重命名为 Microsoft.AspNetCore.*,以使其更清楚地表明它是一个新框架,并且与旧版 ASP.NET 不太兼容。

UseIISPlatformHandler() 不存在了,现在 UseIISIntegration()Main(...) 方法中:

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

而包是 Microsoft.AspNetCore.Server.IISIntegration": "1.0.0""Microsoft.AspNetCore.Server.Kestrel": "1.0.1"。对于静态文件,它是:"Microsoft.AspNetCore.StaticFiles": "1.0.0".

对于 Configure 重载:Configure(IApplicationBuilder); 是默认的,但是您可以添加在依赖注入系统中注册的任何其他类型(在 ConfigureServices 方法中),因为它是约定系统(startup.cs)。

对于 Asp.Net 核心 MVC,您需要安装 Nuget 包

install-package "Microsoft.AspNetCore.StaticFiles"

该指南已过时。不幸的是,更新后的 .Net 核心不再使用 project.json。相反,它现在是 csproj 文件的一部分。要添加静态文件库,您必须使用 nuget 数据包管理器将其添加到项目中。当您重建时,您将在该库的 csproj 文件中看到一个条目。我认为 project.json 是一个很好的想法,它与核心选择加入方法相一致,因为它将允许 intellisense 启动以帮助您 select 来自可用的库。由于无法在解决方案中直接编辑 csproj 文件,因此您失去了该功能。