函数的监听器无法启动。为什么?

时间:2018-01-19 07:15:15

标签: c# azure .net-core azure-functions

当我从visual studio运行azure函数时,我收到以下错误。

  

发生了ScriptHost错误[1/19/2018 6:40:52 AM]听众   for function' MyFunctionName'无法开始。   Microsoft.WindowsAzure.Storage:服务器遇到内部错误。   请稍后再试。

当我通过运行func host start命令从命令提示符运行时。我收到以下警告。然后它就卡在了

  

按实例ID

获取的主机锁租约

  

找不到工作职能。尝试制作你的工作类和方法   上市。如果您正在使用绑定扩展程序(例如ServiceBus,Timers,   等等)确保你已经注册了注册方法   你的启动代码中的扩展名(例如config.UseServiceBus(),   config.UseTimers()等。)。

Azure功能版本:azure-functions-core-tools@2.0.1-beta.22 我使用的是Storage Accounts Blob容器和队列。

我已连接开发存储帐户,我已检查存储模拟器已启动。

{
  "IsEncrypted": false,
  "Values": {
    "ConnectionStrings:Default": "Server=.\\SQLEXPRESS; Database=TestDb; Trusted_Connection=True;",
    "ConnectionStrings:BlobStorageAccount": "UseDevelopmentStorage=true",

    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
  }
}

FYI。

以前工作正常,但我在Visual Studio中收到了这条消息。

  

您的许可证已过时且必须更新。检查更新   许可继续使用本产品

所以我刚刚删除%localappdata%%temp%,然后我尝试运行Azure功能,之后我开始

  

函数的侦听器无法启动错误

那么它与我的visual studio订阅有关还是我错误地删除了所有必需的文件?或者这与其他事情有关吗?

8 个答案:

答案 0 :(得分:1)

如果您通过本地存储模拟器运行,然后运行功能设置,请在UseDevelopmentStorage=true

中添加 AzureWebJobsStorage local.setting.json

,并且如果使用func具有正常的Azure存储连接字符串,则必须在local.setting.json中设置AzureWebJobsStorage

更多view

答案 1 :(得分:1)

我刚刚目睹了这一点。此链接https://github.com/Azure/azure-functions-core-tools/issues/357表示本地存储仿真器可能未运行。我停止调试了。转到Cloud Explorer,打开本地节点以查看Blob内容。这必须已经启动了本地存储模拟器。当我再次点击运行时,Azure Functions Tools启动。

答案 2 :(得分:1)

对于遇到此问题的任何人,以下内容可能会有所帮助...

Azure持久功能依赖于TableStorage,并且最新版本的Azurite(v3)当前不支持TableStorage。这样,拉出Azurite存储库并切换到legacy-master(v2)分支,然后运行npm run start

答案 3 :(得分:1)

对我来说,此错误正在显示,因为我没有安装和运行Storage Emulator。您可以通过以下链接将Storage emulator作为VS Code插件安装。安装后,转到VS Code命令面板并运行Azurite: Start Blob Service。然后在本地运行函数。它将正常工作。

https://marketplace.visualstudio.com/items?itemName=Azurite.azurite

答案 4 :(得分:0)

我不知道这个问题的根本原因,但我通过将相同的代码复制到我的PC上的不同位置来解决它。我多次遇到这个问题,每次将项目复制到不同的位置都会有效。

您可以跟踪此问题here

答案 5 :(得分:0)

我在Azure函数中使用ServiceBusTrigger时遇到了这个问题。

enter image description here

在我的Visual Studio解决方案中,我有两个Azure Functions,并且我的两个函数都使用相同的Subscription Name,其中一个函数是将数据发送到Azure服务总线,而另一个是接收数据。

发送

private const string _topicName = "factfinder_topic";
private const string _subscriptionName = "subs1";
private static ITopicClient _topicClient;
private static ILogger _logger;
[FunctionName("SendDataToSubscription")]
public static void Run([ServiceBusTrigger(_topicName, _subscriptionName, Connection = "ServiceBusConnectionString")] string mySbMsg, ILogger log) {
    _logger = log;
    PrepareSend().GetAwaiter().GetResult();
    _logger.LogInformation($ "C# ServiceBus topic trigger function processed message: {mySbMsg}");
}

接收

private const string _topicName = "factfinder_topic";
private const string _subscriptionName = "subs1";
[FunctionName("FetchDataFromSubscription")]
public static void Run([ServiceBusTrigger(_topicName, _subscriptionName, Connection = "ServiceBusConnectionString")] string mySbMsg, ILogger log) {
    log.LogInformation($ "C# ServiceBus topic trigger function processed message: {mySbMsg}");
}

如您所见,两种情况下_subscriptionName的值都是subs1,这是错误的,因此在将其更改为我的其他订阅名称后,{ {1}})在subs2函数中,问题已解决。

答案 6 :(得分:0)

我也遇到了同样的问题。就我而言,退出Visual Studio并再次打开它可以解决该问题。

答案 7 :(得分:0)

我通过在 local.settings.json 文件中设置 UseDevelopmentStorage=false 解决了这个问题。

{
“IsEncrypted”:假,
“价值观”:{
"FUNCTIONS_WORKER_RUNTIME": "蟒蛇",
"AzureWebJobsStorage": "UseDevelopmentStorage=false"
}
}