无法在 Azure 门户中查看通过 Visual Studio 创建/部署的函数的代码,但是当我通过门户创建函数时可以

Posted

技术标签:

【中文标题】无法在 Azure 门户中查看通过 Visual Studio 创建/部署的函数的代码,但是当我通过门户创建函数时可以【英文标题】:Cannot view code in Azure portal for function created / deployed via Visual Studio, yet I can when I make the function via the portal 【发布时间】:2018-07-25 16:35:18 【问题描述】:

我有一个在 Azure 门户中创建的 Azure 函数。我添加了一个计时器功能和一些虚拟代码,它工作正常;我在浏览器中创建并编写了代码——我们称之为FunctionA

然后我在 Visual Studio 2017 中创建了一个新项目 (FunctionB),添加了一个新的计时器函数并将其发布到前面提到的同一 Azure 函数中。有趣的是,当我访问门户时,我仍然可以看到 FunctionA 的代码,但对于 FunctionB,我看到的只是 local.settings.json 文件 - 没有代码可见。

然后我在顶部收到这条消息:

您的应用目前处于只读模式,因为您发布了一个 生成的function.json。对 function.json 所做的更改不会 函数运行时授予荣誉

我认为这意味着我的 VS2017 项目中的 local.settings.json 文件以某种方式将其设为只读,但这并不能解释为什么我什至无法在 Azure 门户中看到代码,更不用说对其进行编辑了。

FunctionB 的代码如下:

namespace DemoAzureFunction

    public static class Function1
    
        [FunctionName("Function1")]
        public static void Run([TimerTrigger("0 0 5 * * *")]TimerInfo myTimer, TraceWriter log)
        
            log.Info($"C# Timer trigger function executed at: DateTime.Now");
        
    

浏览器内代码编辑/查看是一个非常酷的功能。即使我编辑默认的local.settings.json 文件并发布它也没有什么区别。

【问题讨论】:

【参考方案1】:

这是设计使然。更改代码对于 VS 创建的函数(预编译函数)没有意义,因为您的代码已经编译为 dll。

如果您查看 kudu (https://your-function-app-name.scm.azurewebsites.net/DebugConsole),您会发现门户和 VS 创建的函数的文件夹结构不同。

有关门户和 VS 创建函数的更多信息:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library

https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp

【讨论】:

感谢您的回答。我主要关心的是源代码的可见性,而不是编辑它。我在网上看到将 .cs 文件的“复制到输出目录”设置为“始终复制”会导致它传播到门户网站,但是在 VS2017 中更改此设置后,我得到了一个错误。

以上是关于无法在 Azure 门户中查看通过 Visual Studio 创建/部署的函数的代码,但是当我通过门户创建函数时可以的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法在 Azure 门户中访问我的 AAD 应用注册,但我可以使用 Azure CLI 查看它?

将 Azure Function 从门户导入 Visual Studio

删除 Visual Studio 发布的 Azure 函数

Azure 函数从门户或 Visual Studio-Blob 触发器执行

更改密码后无法使用Visual Studio 2013登录Windows azure帐户

微软azure云计算在门户中创建 Windows 虚拟机部署web网站