当我从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订阅有关还是我错误地删除了所有必需的文件?或者这与其他事情有关吗?
答案 0 :(得分:1)
如果您通过本地存储模拟器运行,然后运行功能设置,请在UseDevelopmentStorage=true
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
时遇到了这个问题。
在我的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"
}
}