我创建了一些使用触发器的Azure Webjobs,我刚刚学习了Azure Functions.
根据我的理解,Azure Functions似乎与Azure Webjobs功能重叠,我有一些难以理解何时在Function和Webjob之间进行选择:
与Webjobs不同,函数只能被触发,它不是为了运行连续过程而设计的(但您可以编写代码来创建连续函数).
您可以使用多种语言编写Webjobs和函数(C#,node.js,python ...),但您可以从Azure门户编写函数,以便更容易,更快地开发测试和部署函数.
Webjobs在App Service Web应用程序,API应用程序或移动应用程序的上下文中作为后台进程运行,而Function则使用Classic/Dynamic App Service Plan运行.
关于缩放,函数似乎提供了更多的可能性,因为您可以使用动态应用程序服务计划,并且您可以扩展单个函数,而对于webjob,您必须扩展整个Web应用程序.
因此,确定存在价格差异,如果您运行现有的Web应用程序,您可以使用它来运行webjob而无需任何额外费用但是如果我没有现有的Web应用程序而且我必须编写代码来触发队列我应该使用webjob还是函数?
您需要选择时还需要记住其他注意事项吗?
使用Azure Functions,我可以在C#函数中引用和使用NuGet包吗?
c# azure nuget-package azure-web-app-service azure-functions
在本地测试 Azure Functions 时,我收到此错误:
“在 Blob 存储秘密存储库上执行读取操作时出错。请确保‘AzureWebJobsStorage’连接字符串有效。”
我有 Azure Blob 存储设置,包括存储模拟器和存储资源管理器。如何解决这个问题?
如何向Azure功能添加或访问app.config文件以添加数据库连接字符串?如果您不应该添加app.config并且有更好的方法来访问外部数据库来执行该功能,请告诉我最佳实践.谢谢!
如何重命名Azure功能?
我想将默认的'HttpTriggerCSharp1'名称替换为我自己的名称.目前遗憾的是,此名称包含在函数URL中,并且没有更改它的选项:
https://functions-xxx.azurewebsites.net/api/HttpTriggerCSharp1
azure azure-webjobs serverless-framework azure-functions serverless-architecture
我在local.setting.json中设置本地主机端口.参考Microsoft doc https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local
该文件如下所示
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"AzureWebJobsDashboard": ""
},
"Host": {
"LocalHttpPort": 7073
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行/调试解决方案时,VS仍然在默认端口上托管应用程序(7071)
我已经检查了bin目录,该local.setting.json文件正在进行上述设置.从bin目录运行Azure Fucntion CLI(func host start)正确读取端口号.
看起来VS没有使用"LocalHttpPort"端口.设置中是否需要进行任何其他更改.我有Visual Studio 2017预览版(2)
我有几个C#Azure函数使用计时器触发器按计划运行.我已经设置了它们,在%TimerSchedule%应用程序设置中指的是cron表达式:
public static void Run([TimerTrigger("%TimerSchedule%")]TimerInfo myTimer, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)
在开发过程中,我经常希望使用Azure功能工具为Visual Studio + Azure功能核心工具在本地运行这些功能.但是,当我按F5调试本地函数时,它(通常)不会立即运行.相反,它根据计时器计划开始等待下一次出现.因此,例如,如果我的cron表达式表示每天晚上8点运行,我必须等到晚上8点才能在我的机器上实际运行该功能.
所以我的问题是:在本地运行一次函数的最简单和最好的方法是什么?
我尝试或考虑过的事情:
Run()方法
的控制台应用程序或单元测试TimerInfo和TraceWriter参数Run()- 而且我发现了很少的文档.Microsoft 在Azure功能页面中测试代码的策略对此主题没有太大帮助 - 它只提到计时器触发器作为测试其他触发器类型的方法.
在一个完美的世界里,我会点击F5并且该功能会立即运行一次 - 就像开发一个"普通"的.NET应用程序一样.
在应用服务计划中托管 Azure Function 时,与使用与同一应用服务计划关联的应用服务(编辑:用于静态 API)相比,是否有任何显着差异?我认为唯一的区别是该功能提供了额外的开箱即用触发器。我遗漏了哪些差异会导致我更喜欢其中之一?
我还想确认,如果应用服务计划中未配置扩展,则在应用服务计划中托管 Azure Functions 实际上会限制可扩展性。据我了解,使用消费或高级托管时,功能会根据需要自动扩展,无需额外配置。
我正在开发Azure功能项目,当我第一次发布时,好的.然后我再次发布,出现此错误:
Web Deploy无法修改目标上的文件"FunctionApp5.dll",因为它已被外部进程锁定.为了使发布操作成功,您可能需要重新启动应用程序以释放锁定,或者在下次发布尝试时使用.Net应用程序的AppOffline规则处理程序.有关详情,请访问:http: //go.microsoft.com/fwlink/?LinkId = 221672 #ERROR_FILE_IN_USE.
它仅在我进入Azure门户时发布,并重新启动此Azure功能应用程序
我正在尝试使用 Visual Studio 2019 编写几个 Azure 函数(版本 2)。第一次尝试运行它们时,我收到以下消息:
功能运行,但如果我重新启动 VS 并尝试再次运行该功能,它会再次下载工具,这需要永远。只要我在同一个 VS 会话中重新运行该函数,它就不会重新执行下载。
我已验证我在 VS 中安装了“Azure 开发”工作负载。我还按照此处所述使用 NPM 安装了 Azure Functions Core Tools 。但它每次都会继续重新下载。
我该如何解决这个问题?谢谢。