问题描述
我使用以下代码在应用程序中使用.net核心Azure函数,没有问题。
但是,当我使用.net框架创建Azure函数应用程序时,它会抛出错误。
我尝试了所有可能的Google解决方案。该错误显然是由于nuget和库造成的,因为相同的代码对于v2 .net核心功能应用程序可以正常工作。
[FunctionName("Function1")]
public static async System.Threading.Tasks.Task RunAsync([ServiceBusTrigger("topic","sub",Connection = "ConnectionStringSettingName")]Message mySbMsg,string lockToken,MessageReceiver messageReceiver,ILogger log)
{
log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
我什至也尝试过:
[FunctionName("Function1")]
public static async System.Threading.Tasks.Task RunAsync([ServiceBusTrigger("topic",Guid lockToken,ILogger log)
{
log.LogInformation($"C# ServiceBus topic trigger function processed message: {mySbMsg}");
}
如果我将其作为guid或字符串,反之亦然,则会出现错误:
错误索引方法'Function1.RunAsync'。 Microsoft.Azure.WebJobs.Host:无法将参数“ lockToken”绑定到 键入Guid。确保绑定支持参数“类型”。 如果您使用的是绑定扩展(例如ServiceBus,Timer等) 确保您已调用扩展程序的注册方法 在您的启动代码中(例如config.UseServiceBus(),config.UseTimers(), 等)。
反之亦然:
RunAsync:Microsoft.Azure.WebJobs.Host:错误索引方法 'Function1.RunAsync'。 Microsoft.Azure.WebJobs.Host:无法绑定 参数“ lockToken”以输入Guid。确保参数类型为 受绑定支持。如果您使用的是绑定扩展名(例如 ServiceBus,Timer等),以确保您已致电注册 启动代码中扩展名的方法(例如 config.UseServiceBus(),config.UseTimers()等)。
解决方法
您要发送的locktoken参数是一个字符串。
错误消息是它无法将锁令牌绑定到Guid。
因此,可能期望一个有效的Guid字符串,并且您要发送其他内容。