我正在使用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在功能应用程序设置中进行配置。如果我直接在门户网站中创建一个函数,那么它将起作用。
有什么主意吗?
非常感谢。
答案 0 :(得分:2)
您可以查看以下在Message MsgA {
string content;
int64 A;
};
Message MsgB {
string content;
char B;
};
Message MsgC {
string content;
double C;
};
上已经回答的问题。
答案 1 :(得分:0)
您已经在本地创建了v2函数,但是在“应用程序设置”中,我们可以看到FUNCTIONS_EXTENSION_VERSION
(即,“函数”应用程序设置中的运行时版本)为〜1,用于v1函数。
部署时,您可能会看到此提示
您可能选择了No
来获得例外。
v1函数针对.Net框架,而v2目标针对.Net标准,它们分别具有运行时〜1和beta。彼此不兼容,因此一个运行时仅支持一种功能。这就是为什么出现错误。
解决方案:
如果这些现有的v1功能有用,则需要创建一个新的功能应用程序。将v2函数部署到新函数应用程序,并随时选择Yes
将运行时更改为beta,因为默认情况下它约为1。您还可以在创建任何函数之前转到“函数”应用程序设置将运行时更改为beta。
如果依赖于〜1运行时的函数无用,请转到“应用程序设置”,将FUNCTIONS_EXTENSION_VERSION
更改为beta,然后删除不再使用的v1函数。这样,您无需删除所有功能即可从Function应用程序设置中更改运行时并再次部署。