【问题标题】:Azure Function not working after deploy部署后 Azure 功能不起作用
【发布时间】:2018-12-20 20:48:10
【问题描述】:

我正在使用 Azure 函数做一些 POC。我从 VS 模板创建了一个简单的 HttpTrigger 函数,如果我在 localhost 中调试一切正常,但如果我在 Azure 中部署,当我尝试启动该函数时会出现错误:

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

如果我签入 Insights,错误是:

错误索引方法“Saluda.Run”无法将参数“log”绑定到类型 TraceWriter。确保绑定支持参数类型。 如果您使用绑定扩展(例如 ServiceBus、Timers 等) 确保您已调用扩展程序的注册方法 在您的启动代码中(例如 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 是在功能应用程序设置中配置的。如果我直接在门户中创建一个函数,它就可以工作。

有什么想法吗?

非常感谢。

【问题讨论】:

    标签: c# .net azure azure-functions


    【解决方案1】:

    【讨论】:

    • 谢谢,我用第二个答案解决了。这是版本的错。
    • @Daniel 很高兴听到这个消息。快乐编码!
    【解决方案2】:

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

    当你部署它时,你可能会看到这个提示弹出

    你可能选择了No,所以得到了例外。

    v1 函数针对 .Net 框架,v2 函数针对 .Net 标准,它们有各自的 Runtime ~1 和 beta。互不兼容,所以一个运行时只支持一种功能。这就是你得到错误的原因。

    解决方案:

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

    2. 如果依赖于 ~1 运行时的函数无用,请转到应用程序设置,将 FUNCTIONS_EXTENSION_VERSION 更改为 beta,然后删除 v1 函数,因为它们不再使用。这样,您无需删除所有函数即可从函数应用设置更改运行时并重新部署。

    【讨论】:

    • 感谢您的回答,我可以解决我的问题。我已检查其他答案是否正确,因为我的问题重复并且它链接到旧问题。
    • @Daniel 太好了,很高兴听到这个消息。
    猜你喜欢
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2015-05-03
    相关资源
    最近更新 更多