部署后Az​​ure功能不起作用

时间:2018-07-12 14:51:45

标签: c# .net azure azure-functions

我正在使用Azure函数进行一点POC。我已经从VS模板创建了一个简单的HttpTrigger函数,并且如果我在localhost调试时一切正常,但是如果在Azure中进行部署,则在尝试启动该函数时会出错:

  

发生错误。有关更多信息,请检查日志   错误ID 24d8e48f-d925-45ad-82cf-f767decc5f6f

如果我签入Insights,错误是:

  

错误索引方法'Saluda.Run'无法绑定参数'log'进行键入   TraceWriter。确保绑定支持参数类型。   如果您使用的是绑定扩展(例如ServiceBus,Timer等)   确保您已调用扩展程序的注册方法   在您的启动代码中(例如config.UseServiceBus(),config.UseTimers(),   等)。

调用堆栈:

  

Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:在   Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexer + d__19.MoveNext   (Microsoft.Azure.WebJobs.Host,版本= 2.3.0.0,文化=中性,   PublicKeyToken = 31bf3856ad364e35)   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess   (mscorlib,版本= 4.0.0.0,文化=中性,   PublicKeyToken = b77a5c561934e089),网址为   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification   (mscorlib,版本= 4.0.0.0,文化=中性,   PublicKeyToken = b77a5c561934e089),网址为   Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexer + d__15.MoveNext   (Microsoft.Azure.WebJobs.Host,版本= 2.3.0.0,文化=中性,   PublicKeyToken = 31bf3856ad364e35)内部异常   System.InvalidOperationException处理于   Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexer + d__19.MoveNext:   在   Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexer + d__20.MoveNext   (Microsoft.Azure.WebJobs.Host,版本= 2.3.0.0,文化=中性,   PublicKeyToken = 31bf3856ad364e35)   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess   (mscorlib,版本= 4.0.0.0,文化=中性,   PublicKeyToken = b77a5c561934e089),网址为   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification   (mscorlib,版本= 4.0.0.0,文化=中性,   PublicKeyToken = b77a5c561934e089),网址为   Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexer + d__19.MoveNext   (Microsoft.Azure.WebJobs.Host,版本= 2.3.0.0,文化=中性,   PublicKeyToken = 31bf3856ad364e35)

我正在使用Microsoft.NET.Sdk.Functions 1.0.14(最后一个),AzureWebJobsDashboard和AzureWebJobsStorage在功能应用程序设置中进行配置。如果我直接在门户网站中创建一个函数,那么它将起作用。

有什么主意吗?

非常感谢。

Function code

Configuration

Insights error

2 个答案:

答案 0 :(得分:2)

您可以查看以下在Message MsgA { string content; int64 A; }; Message MsgB { string content; char B; }; Message MsgC { string content; double C; }; 上已经回答的问题。

  1. Cannot bind parameter 'log' to type TraceWriter

  2. Error indexing method 'Class.Method' Cannot bind parameter 'log' to type TraceWriter.

答案 1 :(得分:0)

您已经在本地创建了v2函数,但是在“应用程序设置”中,我们可以看到FUNCTIONS_EXTENSION_VERSION(即,“函数”应用程序设置中的运行时版本)为〜1,用于v1函数。

部署时,您可能会看到此提示

enter image description here

您可能选择了No来获得例外。

v1函数针对.Net框架,而v2目标针对.Net标准,它们分别具有运行时〜1和beta。彼此不兼容,因此一个运行时仅支持一种功能。这就是为什么出现错误。

解决方案:

  1. 如果这些现有的v1功能有用,则需要创建一个新的功能应用程序。将v2函数部署到新函数应用程序,并随时选择Yes将运行时更改为beta,因为默认情况下它约为1。您还可以在创建任何函数之前转到“函数”应用程序设置将运行时更改为beta。

  2. 如果依赖于〜1运行时的函数无用,请转到“应用程序设置”,将FUNCTIONS_EXTENSION_VERSION更改为beta,然后删除不再使用的v1函数。这样,您无需删除所有功能即可从Function应用程序设置中更改运行时并再次部署。