hig*_*zhu 4 c# azure-functions
当我在本地环境中从 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}");
}
}
}
Run Code Online (Sandbox Code Playgroud)
和配置(即local.settings.json)
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我设置一个 http 触发功能应用程序时,它工作正常。
更新:
由于您使用本地虚拟化存储模拟器,因此您的连接字符串是正确的。
如果您的防火墙限制 func 访问存储帐户,则可能会报告此错误。防火墙是监听器无法访问虚拟存储模拟器的原因之一。
在本地运行该函数时,除 httptrigger 之外的所有触发器都需要使用存储模拟器。如果防火墙限制侦听器对虚拟存储的访问,则在执行功能时可能会出现问题。这就是使用 httptrigger 不会出错的原因,因为它不使用虚拟存储模拟器。
尝试禁用防火墙,看看是否可以解决问题。
当然也有可能是Storage Emulator服务没有打开。尝试打字
"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" status
Run Code Online (Sandbox Code Playgroud)
在cmd中查看状态。
如果返回 false,请输入以下命令以启动存储模拟器:
"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" init
"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" start
Run Code Online (Sandbox Code Playgroud)
总结:
这种类型的问题通常是由三个原因造成的。
1.连接字符串错误阻止连接,
2.防火墙设置
3.部分服务未开启。
希望能帮助到你。
原答案:
相同的代码在我这边工作正常,
解决方案:
尝试将相同的代码复制到不同的位置。
也许这可以帮助你。
如果在 Visual Studio Code 中发生这种情况,可能是由于本地模拟器未启动。
要启动模拟器,请在 Visual Studio Code 中按 F1 打开命令选项板,然后执行以下命令。
Azurite: Clean
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4337 次 |
| 最近记录: |