无法找到方法app.UseStaticFiles()

时间:2016-11-12 21:58:12

标签: c# asp.net-core visual-studio-code yo

我正在关注this guide,在第4步中,我被要求在 project.json 文件中添加三行(我做了然后运行 dotnet restore 获得大量更新的包。)

当我在 Configure 方法中输入三行时,我会在所有这些行中得到红线。这些方法无法识别,也没有智能感知等。

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

Configure(IApplicationBuilder, IHostingEnvironment, ILoggerFactory);

我不确定如何解决它。我的猜测是在这个过程中有一个新版本的东西(Yo,Generators,Core等),但我不完全确定。

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

3 个答案:

答案 0 :(得分:4)

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

  

install-package" Microsoft.AspNetCore.StaticFiles"

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

从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方法中),因为它&#39 ;一个常规系统(startup.cs)。