Enr*_*ico 2 c# azure azureservicebus .net-core azure-functions
我有一个问题,创建一个Azure Function与Queue Trigger在.NET 2.0的核心.
在microservice体系结构中,当在队列中创建用于创建用户的新消息时,服务必须接收此消息并基于其中的信息在数据库中创建用户.
在Visual Studio 2017中,我创建了一个新项目Azure Function.
从我选择的新模板Queue Trigger.
此屏幕不同于有关此主题的Microsoft帖子.无论如何,第一个问题是什么Connection和是什么Path.
我创建了一个Service Bus,我有自己的凭证Azure Portal.我复制了Primary Connection String并且Path是我队列的名字.
如果我运行该项目,我会收到很多错误.我发现这个链接Azure Documentation是一个简单的触发器.在这个例子中,他们使用ServiceBusTrigger而不是QueueTrigger.为了解决问题ServiceBusTrigger,我Microsoft.Azure.WebJobs.ServiceBus从Nuget 补充道.它似乎不起作用.
为了获得正确的凭证Azure Function,我创建了一个Azure Portal并下载了app content.
看起来像
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_EXTENSION_VERSION": "beta",
"ScmType": "None",
"WEBSITE_AUTH_ENABLED": "False",
"AzureWebJobsDashboard": "DefaultEndpointsProtocol=https;AccountName=my;AccountKey=something",
"WEBSITE_NODE_DEFAULT_VERSION": "6.5.0",
"WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=my;AccountKey=something",
"WEBSITE_CONTENTSHARE": "createprofile-98873b60",
"WEBSITE_SITE_NAME": "CreateProfile",
"WEBSITE_SLOT_NAME": "Production",
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=createprofil8796;AccountKey=something"
},
"configurationSource": "config",
"bindings": [
{
"type": "serviceBusTrigger",
"connection": "sb://myservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=something",
"queueName": "testqueue",
"accessRights": "manage",
"name": "myQueueItem",
"direction": "in"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我的错误页面
警告:在local.settings.json中找不到名为" https://MyDevServiceBus.servicebus.windows.net "的值,该值与'C:\ Projects\CustomerProfile.AzureService\bin\Debug中'queueTrigger'上设置的'connection'属性相匹配\netstandard2.0 \功能1\function.json".您可以运行'func azure functionapp fetch-app-settings'或在local.settings.json中指定连接字符串.[12/03/2018 12:10:41]读取主机配置文件'C:\ Projects\CustomerProfile.AzureService\bin\Debug \netstandard2.0\host.json'[12/03/2018 12:10:41]主机配置文件读取:[12/03/2018 12:10:41] {[12/03/2018 12:10:41]} [12/03/2018 12:10:42]生成1个工作职能[12/03/2018 12:10:42]启动主机(HostId = desktop7fksikf-631144646,版本= 2.0.11353.0,ProcessId = 8992,Debug = False,Attempt = 0,FunctionsExtensionVersion = beta)在http:// localhost上侦听 :7071 /按 CTRL-C退出... [12/03/2018 12:10:42]发生ScriptHost错误[12/03/2018 12:10:42] Microsoft.Azure.WebJobs.Host:错误索引方法'Function1.Run'.Microsoft.Azure.WebJobs.Host:Microsoft Azure WebJobs SDK"QueueConnection"连接字符串缺失或为空.可以通过以下方式设置Microsoft Azure存储帐户连接字符串:[12/03/2018 12:10:42] 1.在.config文件的connectionStrings部分中以下列格式设置名为"AzureWebJobsQueueConnection"的连接字符串或者[12/03/2018 12:10:42] 2.设置名为"AzureWebJobsQueueConnection"的环境变量,或[12/03/2018 12:10:42] 3.设置JobHostConfiguration的相应属性.[12/03/2018 12:10:42]错误索引方法'Function1.Run'[12/03/2018 12:10:42] Microsoft.Azure.WebJobs.Host:错误索引方法'Function1.Run'.Microsoft.Azure.WebJobs.Host:Microsoft Azure WebJobs SDK"QueueConnection"连接字符串缺失或为空.可以通过以下方式设置Microsoft Azure存储帐户连接字符串:[12/03/2018 12:10:42] 1.在.config文件的connectionStrings部分中以下列格式设置名为"AzureWebJobsQueueConnection"的连接字符串或者[12/03/2018 12:10:42] 2.设置名为"AzureWebJobsQueueConnection"的环境变量,或[12/03/2018 12:10:42] 3.设置JobHostConfiguration的相应属性.[12/03/2018 12:10:42]找不到工作职能.尝试公开您的工作类和方法.如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等).[12/03/2018 12:10:42]工作主持人开始[12/03/2018 12:10:42]以下1个函数出错:[12/03/2018 12:10:42]运行:Microsoft .Azure.WebJobs.Host:错误索引方法'Function1.Run'.Microsoft.Azure.WebJobs.Host:Microsoft Azure WebJobs SDK"QueueConnection"连接字符串缺失或为空.可以通过以下方式设置Microsoft Azure存储帐户连接字符串:[12/03/2018 12:10:42] 1.在.config文件的connectionStrings部分中以下列格式设置名为"AzureWebJobsQueueConnection"的连接字符串或者[12/03/2018 12:10:42] 2.设置名为"AzureWebJobsQueueConnection"的环境变量,或[12/03/2018 12:10:42] 3.设置JobHostConfiguration的相应属性.[12/03/2018 12:10:42] [12/03/2018 12:10:42] [12/03/2018 12:10:42]通过实例ID"000000000000000000000000E37F5049"获取的主机锁租约.
这种正确的实施方式是Azure Function什么?GitHub上有什么例子吗?提前致谢.
您正在混淆Azure Service Bus和Azure存储队列.Queue Trigger用于存储队列,Connection存储帐户的连接字符串Path也用于队列路径.
要使用Service Bus,您应该使用Service Bus Trigger.在.NET Core/v2版本的函数上设置该函数需要花费更多的精力,因为Visual Studio工具尚不可用.
我建议暂时使用函数v1作为Service Bus.
ServiceBusTrigger是正确的类型.您应将其Connection属性设置为包含Service Bus连接字符串的设置名称,而不是连接字符串本身.从而
ServiceBusTrigger你的功能定义.MyServiceBusConnection(或您喜欢的任何其他名称)的设置.设置为sb://myservicebus.servicebus.windows.net/;...[ServiceBusTrigger("myqueue", AccessRights.Manage, Connection = "MyServiceBusConnection")]| 归档时间: |
|
| 查看次数: |
4852 次 |
| 最近记录: |