无法使用现有功能进行升级

时间:2018-04-19 07:29:29

标签: azure azure-functions

从Azure门户创建新的Azure功能应用程序。添加一个新功能。您将看到一个带有以下文字的警告图标:

  

无法使用现有功能升级

     

主要版本升级可能会对语言和绑定带来重大变化。升级运行时的主要版本时,请考虑创建新的功能应用程序并将功能迁移到此新应用程序。

我的问题是需要采取什么行动?这只是一个警告,未来的升级可能会导致问题吗?也许它与the GitHub commentary about new template versions in Visual Studio

有关

注意:从功能应用程序中删除所有功能会导致问题消失。

2 个答案:

答案 0 :(得分:4)

你是对的,它只是一个提示你的提示,不需要采取任何行动。

在门户网站中创建功能应用程序时,应用程序默认使用运行时~1

在应用程序中创建任何功能之前,您可以在功能应用程序设置面板中更改运行时版本。

之后,不建议也不允许更改,因为此面板中的按钮为灰色,并显示警告。因为运行时升级可能会导致代码出错,具体取决于特定的运行时。

如您所见,一旦应用程序中不存在任何功能,警告就会消失,并且能够再次更改运行时。

应用程序设置面板允许我们在FUNCTIONS_EXTENSION_VERSION~1之间更改beta(即运行时),尽管有现有功能,但仍然记得运行时切换可能会导致重大更改。

<强>更新

预览beta运行时一直是GA,相应的FUNCTIONS_EXTENSION_VERSION更改为~2,当我们创建一个功能应用时,默认运行时也会更改为~2。

答案 1 :(得分:2)

警告存在,因此在将运行时升级到v2时,您不会破坏当前的v1函数。

考虑以下代码示例:

V2模板:

[FunctionName('Function1')]
        public static IActionResult Run([HttpTrigger(AuthorizationLevel.Function, 'get', 'post', Route = null)]HttpRequest req, TraceWriter log)
        {

V1模板:

[FunctionName('Function1')]
        public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Function, 'post', Route = null)]
            HttpRequestMessage req,
            TraceWriter log)

这两个函数定义使用不同版本的运行时。

如果您只需按一下按钮,就可以更新运行时,那么您就会破坏代码。因此建议,完全使用新版本创建一个新的功能应用程序并将代码迁移到它而不是仅仅更新运行时。

我找到here的代码段。