在本地环境中从Visual Studio运行azure函数时遇到以下错误:
函数“ Function1”的侦听器无法启动。 Microsoft.WindowsAzure.Storage:错误的请求。
这是我的代码
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
namespace FunctionApp3
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
}
和配置(即local.settings.json)
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
}
但是当我设置一个http触发功能应用程序时,它工作正常。
答案 0 :(得分:2)
更新:
由于您使用的是本地虚拟化存储仿真器,因此您的连接字符串正确。
如果您的防火墙限制func访问存储帐户,则可能会报告此错误。防火墙是侦听器无法访问虚拟存储模拟器的原因之一。
在本地运行该功能时,除httptrigger之外的所有触发器都需要使用Storage Emulator。如果防火墙限制了侦听器对虚拟存储的访问,则执行功能时可能会出现问题。因此,httptrigger不会出现错误,因为它不使用虚拟存储模拟器。
尝试禁用防火墙,看看是否可以解决问题。
当然,Storage Emulator服务也可能没有打开。尝试键入
"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" status
在cmd中检查状态。
如果返回false,请输入以下命令以启动Storage Emulator:
"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" init
"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" start
总结:
这种类型的问题通常有三个原因。
1。连接字符串错误导致无法连接,
2。防火墙已设置
3。某些服务未打开。
希望有帮助。
原始答案:
相同的代码对我来说很好用
解决方案:
尝试将相同的代码复制到其他位置。
也许this可以为您提供帮助。
答案 1 :(得分:1)
如果在 Visual Studio Code 中出现这种情况,可能是因为本地模拟器没有启动。
在 VS Code 中安装 Azurite 插件,然后启动它。
要启动模拟器,请在 Visual Studio Code 中按 F1 打开命令面板,然后执行以下命令。
Azurite: Clean
答案 2 :(得分:0)
我发现问题在于我在另一个驱动器中运行了 Azure 存储模拟器,然后我有了我的项目。即模拟器在 C:\Emulator 上运行,而项目在 S:\MyFunction 上本地运行