为了账号安全,请及时绑定邮箱和手机立即绑定

ASP.NET Core 3.0 get_HostingEnvironment() 扩展中找不到方法

ASP.NET Core 3.0 get_HostingEnvironment() 扩展中找不到方法

PHP
白板的微信 2024-01-21 10:07:32
下面的代码复制了我尝试在新的 ASP.NET Core 3.0 API 项目中创建的某些扩展的错误。using ClassLibrary1;using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.Hosting;namespace WebApplication1{  public class Program  {    public static void Main(string[] args)    {      CreateHostBuilder(args).Build().Run();    }    public static IHostBuilder CreateHostBuilder(string[] args) =>        Host.CreateDefaultBuilder(args)            .ConfigureWebHostDefaults(webBuilder =>            {              webBuilder.UseStartup<Startup>();              webBuilder.ConfigureAppConfiguration((context, config) =>              {                // this works fine                var env = context.HostingEnvironment;              });              webBuilder.CustomConfigureAppConfiguration();            })            .ConfigureAppConfiguration((context, config) =>            {              // this works fine              var env = context.HostingEnvironment;            })            .CustomConfigureAppConfiguration();  }}该类Extensions需要位于不同的项目中。在同一个主项目中似乎工作正常。using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.Hosting;// This project can be either netstandard2.0 or netcoreapp3.0namespace ClassLibrary1{  public static class Extensions  {    public static IWebHostBuilder CustomConfigureAppConfiguration(this IWebHostBuilder hostBuilder)    {      hostBuilder.ConfigureAppConfiguration((context, config) =>      {        // this fails with System.MissingMethodException: 'Method not found: 'Microsoft.AspNetCore.Hosting.IHostingEnvironment Microsoft.AspNetCore.Hosting.WebHostBuilderContext.get_HostingEnvironment()'.'        var env = context.HostingEnvironment;      });      return hostBuilder;    }它仅在运行时失败,并且仅在访问HostingEnvironment. 当删除/评论var env = context.HostingEnvironment;作业时,我仍然可以在调试中检查和查看它。知道我在这里缺少什么吗?
查看完整描述

4 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

对于该netstandard2.0项目,我只能在(来自)HostingEnvironment中获取-安装了软件包:HostBuilderContextIHostBuilder.ConfigureAppConfigurationMicrosoft.Extensions.Hosting.Abstractions


public static IHostBuilder CustomConfigureAppConfiguration(this IHostBuilder hostBuilder)

{

  hostBuilder.ConfigureAppConfiguration((context, config) =>

  {

    // this works with Microsoft.Extensions.Hosting.Abstractions installed

    var env = context.HostingEnvironment;

  });


  return hostBuilder;

}

HostingEnvironmentfrom WebHostBuilderContext(from IWebHostBuilder.ConfigureAppConfiguration) 在项目执行时仍然会引发异常netcoreapp3.0。这在以前的版本中工作得很好。


另外,当注释掉时,我仍然可以在调试期间检查它:

https://img1.sycdn.imooc.com/65ac7d9d0001897e07330171.jpg

似乎仍然有点不对劲,但至少现在可以了。

更新

经过更多挖掘后,我发现了引用的差异:
netcoreapp3.0- 通过共享框架 Microsoft.AspNetCore.Hosting.Abstractions, Version=3.0.0.0
-netstandard2.0通过 NuGetMicrosoft.AspNetCore.Hosting.Abstractions, Version=2.2.0.0

v2.2 公开了v3.0 中Microsoft.AspNetCore.Hosting.IHostingEnvironment已弃用的内容

截至 2019 年 10 月 1 日,v3.0 在 NuGet 上不可用。


查看完整回答
反对 回复 2024-01-21
?
慕后森

TA贡献1802条经验 获得超5个赞

我有类似的问题。就我而言(EF 3.0),我正在使用一个带有Microsoft.Extensions.Hosting (3.0.1). 这是使用来自不同项目的类。这第二个项目包括Microsoft.Azure.WebJobs.Extensions (3.0.5)。该包有Microsoft.Azure.WebJobs (3.0.14)一个依赖项。这包括Microsoft.Extensions.Hosting (2.1.0)与 EF 3.0 不兼容的 。包括

    <PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.1" />

在第二个项目中解决了我的问题。


查看完整回答
反对 回复 2024-01-21
?
千巷猫影

TA贡献1829条经验 获得超7个赞

请将您的替换HostingEnvironmentWebHostEnvironment.

正如文件所说:

将 IHostingEnvironment 替换为 IWebHostEnvironment 并为 Microsoft.Extensions.Hosting 命名空间添加 using 语句。


查看完整回答
反对 回复 2024-01-21
?
噜噜哒

TA贡献1784条经验 获得超7个赞

我遇到了这个问题,我的无服务器 API 有另一个项目作为参考。在该引用的项目中,我使用了以下 PackageReference:

  • Microsoft.Extensions.Configuration.Abstractions

  • Microsoft.Extensions.Logging.Abstractions

我只有在将版本更改为 2.1.0 后才能使其工作,我使用的是 v3+ 版本


查看完整回答
反对 回复 2024-01-21
  • 4 回答
  • 0 关注
  • 68 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信