无法访问 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
我的 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