我目前正在开发azure函数(这是新功能),但是在尝试从主题/订阅中读取时出现以下错误。我不知道是什么原因造成的。任何帮助,将不胜感激。
[20/12/2018 14:22:22] Loaded custom extension: ServiceBusExtensionConfig from 'referenced by: Method='Function.ContentCacheUpdate.ReadNotificationQueue.Run', Parameter='mySbMsg'.'
[20/12/2018 14:22:22] Generating 1 job function(s)
[20/12/2018 14:22:23] Found the following functions:
[20/12/2018 14:22:23] Function.ContentCacheUpdate.ReadNotificationQueue.Run
[20/12/2018 14:22:23]
[20/12/2018 14:22:23] Host initialized (1208ms)
Listening on http://localhost:7071/
Hit CTRL-C to exit...
[20/12/2018 14:22:23] Host started (1682ms)
[20/12/2018 14:22:23] Job host started
[20/12/2018 14:22:23] Host lock lease acquired by instance ID '000000000000000000000000EB6A5850'.
我的功能看起来像这样
private const string TopicName = "testtopic";
[FunctionName("Function2")]
public static void Run([ServiceBusTrigger(TopicName, "SubscriptionName", Connection = "MyBindingConnection")]string mySbMsg, ILogger log)
{
log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
,而我的local.settings.json文件是
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"TopicName": "testtopic",
"SubscriptionName": "testsubscription",
"MyBindingConnection": "Endpoint=sb://test-.xxxxxxxxxxxxxxxxxxxx="
}
}
谢谢
答案 0 :(得分:1)
看起来VS使用的Azure Functions核心工具已过时。要解决此问题,
首先,转到VS菜单>“工具”>“扩展和更新”,找到Azure Functions and Web Jobs Tools
,如果不是latest(现在为15.10.2046.0),请对其进行更新。关闭所有VS实例。等待更新完成(如果有)。
然后清理旧工具和模板,并使用VS下载新工具。
删除%localappdata%\AzureFunctionsTools
和%userprofile%\.templateengine
文件夹。
重新打开VS以创建一个新的Function项目,请在创建对话框中等待,请参见Making sure all templates are up to date...
。
单击“刷新”可立即使用最新模板。
创建新的v2 ServiceBus主题触发器后,如下更改代码。 Connection
默认情况下在应用程序设置(local.setting.json)中查找值,而对于其他属性,我们需要用百分号将它们包装起来。在doc中查看详细信息。
[FunctionName("MyServiceBusTrigger")]
public static void Run([ServiceBusTrigger("%TopicName%", "%SubscriptionName%", Connection = "MyBindingConnection")]string mySbMsg, ILogger log)
{
log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"TopicName": "testtopic",
"SubscriptionName": "testsubscription",
"MyBindingConnection": "Endpoint=sb://test-.xxxxxxxxxxxxxxxxxxxx="
}
}
答案 1 :(得分:0)
即使我使用这种方式,也可以交叉检查订阅中是否有消息。