无法访问 Azure Functions 运行时

Azure Functions runtime is unreachable

我的 azure 函数返回错误:无法访问 Azure Functions 运行时

    System.Reflection.ReflectionTypeLoadException : Unable to load one or more of the requested types.
Method 'LogFunctionStarted' in type 'WebJobs.Host.Storage.Logging.PersistentQueueLogger' from assembly 'Microsoft.Azure.WebJobs.Host.Storage, Version=4.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.

  at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)

  at System.Reflection.RuntimeModule.GetTypes()

  at System.Reflection.Assembly.GetTypes()

  at Mapster.TypeAdapterConfig.<>c.b__87_0(Assembly assembly)

  at System.Linq.Enumerable.SelectArrayIterator`2.MoveNext()

  at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.ToList()

  at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

  at Mapster.TypeAdapterConfig.Scan(Assembly[] assemblies)

  at DTSQuickHit.Functions.Startup.Configure(IFunctionsHostBuilder builder) at E:\buildagents\Agent03\_work\s\DTSQuickHit.Functions\Startup.cs : 32

我的创业公司:

var environmentName = Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT");
var basePath = IsDevelopmentEnvironment(environmentName)
    ? environmentName
    : $"{Environment.GetEnvironmentVariable("HOME")}\site\wwwroot";

var config = new ConfigurationBuilder()
    .SetBasePath(basePath)
    .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
    .AddEnvironmentVariables()
    .Build();

Microsoft.Azure.WebJobs.Host.Storage 甚至不在我的项目文件中,所以我不明白这个问题。

我的项目文件:

  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="4.3.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.1.0" />
  </ItemGroup>

你能帮我解决这个问题吗?

当您遇到类似 Azure Functions Runtime is unreachable 的错误时,主要原因是 存储帐户连接问题.

请检查此 thread 中给出的步骤以解决此问题。

如果上述步骤没有帮助解决问题,请检查以下步骤:

  • 确保 local.settings.json 文件与 host.json 文件位于同一位置(在项目根目录)。
  • 修改获取环境变量的代码如下:
var environmentName = Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT", EnvironmentVariableTarget.Process);
  • 基本配置应该是这样的:
public class Startup : IWebJobsStartup
{
    public void Configure(IWebJobsBuilder builder)
    {
        var config = new ConfigurationBuilder()
            .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
            .SetBasePath(basePath)
            .AddEnvironmentVariables()
            .Build();
    }
}

此外,请参考此 GitHub issue-6239 in Azure Functions,其中说明在 startup class 中设置 AZURE_FUNCTIONS_ENVIRONMENT 有一些问题和给定的临时修复。

感谢@HariKrishnaRajoli-MT 的 post。实际上,我检查了你提到的线程,但似乎没有解决我的问题,而是我做了什么:我已经将干净的功能项目部署到 Azure,它工作正常,它正常凝视,然后部署了正确的失败的项目,但现在它神奇地工作了。我相信在部署期间(因为我在 .yaml 文件中使用了多种部署方式)一些默认值可能已被覆盖但我不确定)

这是在 Github 上跟踪的,请在此处关注问题 https://github.com/MicrosoftDocs/azure-docs/issues/92820