无法在Startup.cs之外访问IApplicationBuilder的所有扩展方法

时间:2018-10-19 02:06:49

标签: c# asp.net-core

我正在尝试为IApplicationBuilder添加扩展方法并运行app.UseHsts()app.UseHttpsRedirection()app.UseStaticFiles()

但是尝试运行不同的命令时出现错误,提示找不到该方法,但是我使用包含扩展方法的Microsoft.AspNetCore.Builder进行了定义。

由于某种原因,我无法在IApplicationBuilder扩展中访问与Startup.cs中相同的扩展方法。我可以访问一些扩展方法,但不是全部。

代码:

启动:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseHsts();
    app.UseHttpsRedirection();
    app.UseStaticFiles();
}

扩展名:

using Microsoft.AspNetCore.Builder;

public static IApplicationBuilder UseLCDefault(this IApplicationBuilder app)
{
    IHostingEnvironment env = app.ApplicationServices.GetRequiredService<IHostingEnvironment>();

    app
        .UseSession(new SessionOptions() { IOTimeout = new TimeSpan(3, 0, 0) })
        .UseMvcWithDefaultRoute();

    app.UseStaticFiles(); //causes an exception, method can't be found

    return app;
}

1 个答案:

答案 0 :(得分:2)

虽然它们共享相同的名称空间,但它们属于不同的库。

请确保在定义扩展方法的任何地方都引用必要的依赖项。

UseHstsUseHttpsRedirection扩展名来自 Microsoft.AspNetCore.HttpsPolicy.dll

UseStaticFiles来自 Microsoft.AspNetCore.StaticFiles.dll