是否可以在azure函数文件夹结构中包含web.config或app.config文件以允许程序集绑定重定向?
c# assembly-binding-redirect azure-functions visual-studio-2017 azure-functions-runtime
我的函数是引用一个引用Microsoft.Extensions.Logging.Abstractions 2.0.0的程序集.如果我将该版本的nuget引用添加到函数的程序集中,则函数执行将失败:
[1/25/2018 11:14:46 PM] Microsoft.Azure.WebJobs.Host:错误索引方法'TrainingFunction.Run'.Microsoft.Azure.WebJobs.Host:无法将参数'log'绑定到类型ILogger.确保绑定支持参数Type.如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等).
是否可以在Azure功能中使用较新的记录器?(SDK 1.0.7)
(如果这个问题措辞不够,有人可以帮我清理一下吗?)
我有一个Azure功能(2.0),它依赖于一些System.Drawing代码.我添加了一个NuGet引用System.Drawing.Common(4.5.0).
但是,在发布应用程序后,调用该函数时,会产生错误:
System.Private.CoreLib:执行函数时出现异常:[MyFunctionName].System.Drawing.Common:此平台不支持System.Drawing.
据我所知,现在.NET Core支持System.Drawing.Common,我相信我的Azure功能正在运行的环境.但实际项目是.NET Standard 2.0项目.
我很困惑如何解决这个问题.我已经尝试将项目转换为.NET Core 2.1项目,但这导致了与"元数据生成失败"相关的奇怪错误,并且无法找到System.Runtime.
我的项目引用了Microsoft.Azure.WebJobs.Extensions.EventGrid(2.0.0-beta2),如果这是相关的.
azure .net-core azure-functions .net-standard azure-functions-runtime
我使用VS 2017 Publish机制在消费计划中部署了VS 2017 C#开发的Azure功能应用程序.所有功能都是定时器或服务总线触发.我看到在Azure门户中运行的状态,并且功能似乎正在工作,例如将行写入SQL Azure数据库,但是,在尝试检查或监视功能时,我经常遇到Azure门户中的错误,例如红色错误框弹出错误:
The function runtime is unable to start.
Session Id : xxxxxxxx
Timestamp : xxxxxxx
Run Code Online (Sandbox Code Playgroud)
我查看了日志,在日志文件中看不到任何明显的东西,我尝试部署到新的App Service并解决了一段时间的问题,但它已经回来了.我已将异常处理程序和异常消息中的所有函数包装到TraceWriter中,所有函数执行起来都非常快〜最多30-40秒.偶尔我也看到错误说"你没有权限xxx".
任何帮助非常感谢.
我正在测试函数的CPU性能,所以我创建了一个函数,用于查找数字中的素数.它由Azure Service Bus触发.在我的本地机器上它运行350ms.
在消费计划中运行时,该功能大约需要1000毫秒.当我批量发送100条消息到函数时,它可以扩展到大约16个实例,但每个函数的性能大大降低到3000-7000ms之间.
在尝试使用4核的标准服务计划时,性能会更好,但不是那么多.它仍然比我的笔记本电脑慢得多.这家伙有类似的问题.
这是功能所期望的性能/扩展吗?Eq不适合批量处理CPU密集型方法?
Azure批次会更合适吗?
我已将 Azure Function v3 项目中的所有程序集升级到版本 5.0,但我无法运行该函数。这是我函数的 csproj 文件的部分定义:
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="4.0.3" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.SignalRService" Version="1.2.2" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
使用 .NET 5 实现此功能的必要解决方法是什么?谷歌没有得出任何结论。
更多信息:5.0.100 [C:\Program Files\dotnet\sdk]
这是我收到的错误消息之一:
无法加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,Version=5.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。该系统找不到指定的文件。
函数是否支持在消费计划中使用客户端证书授权访问函数?类似于此处描述的方法?基本上,如果调用方没有提供有效的客户端证书,我正在寻找函数运行时立即拒绝连接请求,而我不必在代码中实现该授权例程。
通常建议在ConfigureAwait(false)不需要上下文时等待异步调用时使用。只是想知道ConfigureAwait(false)在 Azure Functions中使用有什么好处。
Azure 函数线程是否具有非空值SynchronizationContext,因此使用ConfigureAwait(false)它可以避免不必要地捕获它并将等待继续重新安排回捕获的SynchronizationContext?
ConfigureAwait(false)在每次异步调用结束时添加有点麻烦,因此如果没有性能/或任何其他相关增益,则最好避免在 Azure Functions 中运行的代码中使用它。
查看azure函数主机代码:https : //github.com/Azure/azure-functions-host/blob/918b057707acfb842659c9dad3cef0193fae1330/src/WebJobs.Script.WebHost/WebScriptHostManager.cs#L181
似乎 azure 函数主机试图在调用 azure 函数之前去除 ASP.NET SynchronizationContext。
synchronizationcontext async-await azure-functions azure-functions-runtime azure-function-async
Azure Functions/EFSQLSERVER .NET CORE 3.0 的问题:
重现:
导致错误,如以下代码段所示。有人遇到过这个问题吗?
Azure Functions Core Tools (2.7.1633 Commit hash: 45c7d86a3bbc9ed0a80a8f4199aa7ea80ccfb24e)
Function Runtime Version: 2.0.12673.0
[10/4/2019 6:13:14 PM] Building host: startup suppressed:False, configuration suppressed: False
[10/4/2019 6:13:14 PM] Loading startup extension 'Startup'
[10/4/2019 6:13:14 PM] Loaded extension 'Startup' (1.0.0.0)
[10/4/2019 6:13:14 PM] Loading startup extension 'DurableTask'
[10/4/2019 6:13:14 PM] Loaded extension 'DurableTask' (1.0.0.0) …Run Code Online (Sandbox Code Playgroud) azure azure-functions-runtime .net-core-3.0 entity-framework-core-3.0
我有一个项目,其中有几个按计划运行的基于 .NET Core 的 Azure Functions。其中一个每 10 分钟运行一次,用于更新视图计数,类似于 SO 跟踪问题视图的方式,另一个则每周发送一次电子邮件。这些功能运行良好一年左右。我最近将它们更新为使用 Azure Functions SDK v3 和 Azure Functions 运行时 v3 以及 .NET Core 3.1(基本上从 .NET Core 2.1 迁移到 .NET Core 3.1,因此我需要更新函数运行时)。
有一次我收到了一张比平常高得多的账单。事实证明,共享相同底层存储帐户的函数开始对存储进行大量 API 事务。每 5 分钟就有数千次。通常,每次运行都会生成大约 100 个存储事务(可能是检索函数文件?),但在某些时候事务会急剧增加。重新启动功能后,交易会降至正常,并且几天内一切正常,然后它们再次跳跃并保持高位,直到重新启动。
功能代码没有改变,仅升级了SDK和运行时。该函数代码通过 SDK 提供的记录器进行恒定数量的日志写入(例如 7),并且不以任何其他方式与存储交互。
我有两个相同的环境,一个用于测试,一个用于生产,并且都有相同的问题。该功能发生故障所需的时间间隔是几天,但每次似乎都不同。但是,如果我同时重新启动测试和生产,下一个峰值将在两个环境中同时发生,因此存在确定性。
根据我通过 Metrics 工具的调查,违规交易类型是 Create、Close 和 ChangeNotify,以及一些 Cancel(但少于其他)。该存储不用于其他任何用途(事实上,它的存在只是因为 Azure Functions 需要后备存储来存储其文件或其他内容)
这是相关的触发代码
[FunctionName("ViewCountUpdater")]
public static async Task RunAsync([TimerTrigger("0 */10 * * * *"/*, RunOnStartup = true*/)]TimerInfo timer, ILogger log, ExecutionContext context)
Run Code Online (Sandbox Code Playgroud)
我相信我遇到了 Azure Functions 运行时或 Azure Functions .NET Core …