- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个不断增长的功能应用程序库(目前有 14 个),它们创建不同的 3D 模型,但根据设计,每个模型都具有相同的 HttpTriggers
,以便中央系统可以调用/触发它们来构建和返回他们的模型。
例如HttpTriggers 例如:
[FunctionName("Register")]
[FunctionName("Awake")]
[FunctionName("Restart")]
[FunctionName("GetAppDetails")]
[FunctionName("Version")]
[FunctionName("GetThumbnail")]
[FunctionName("GetDefaultObject")]
[FunctionName("GetObject")]
等等..
我使用 C#6 In Process 模型在 Azure Function 运行时 v4.x 上运行。所有 Function 应用都运行良好,并且已经这样做了几年或更长时间。
但是,每个 3D 模型 Function App 都有自己的 VS 解决方案(以便任何人都可以独立开发),并且每个项目都包含相同的 HttpTriggers 样板代码,以便它可以与平台进行互操作。这看起来效率低下,并导致不必要的代码重复。
我想修改他们的 Visual Studio 模板项目,以便将常见 HttpTriggers 的样板源代码隐藏在引用的 dll/nuget 包中,从而使 VS 模板对于新开发人员来说保持美观和简单开发 3D 模型业务逻辑,而无需关心(也可以防止修补)与平台通信的 HttpTrigger 样板代码。
到目前为止,我尚未成功实现此目标,因为当我将 HttpTrigger 源代码移至引用的程序集时,Function Apps JobHost 不再检测到它们。这是当其中任何一个启动时从 JobHost 报告的消息...
Azure Functions Core Tools
Core Tools Version: 4.0.5198 Commit hash: N/A (64-bit)
Function Runtime Version: 4.21.1.20667
[2023-08-02T16:12:34.160Z] Found C:\Users\ocon5376\source\repos\_DO\_Assets\AccessCover\src\AccessCover.csproj. Using for user secrets file configuration.
[2023-08-02T16:12:40.651Z] No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).
For detailed output, run func with --verbose flag.
[2023-08-02T16:12:45.220Z] Host lock lease acquired by instance ID '000000000000000000000000C3B350B9'.
这篇文章讨论a similar issue为了努力遵循其指导并强制及时加载我引用的程序集,我尝试将包含 HttpTriggers 的类设为 StartUp 类,并确认执行已到达 public override void Configure(IFunctionsHostBuilder builder)
方法,其中我添加了 *AppDomain.CurrentDomain.Load(xxx)*
- 但是,这并没有导致检测到 HttpTriggers,所以我猜想在 StartUp 时 JobHost 已经进展得太远了类已处理。
到目前为止,我还没有找到任何与此直接类似的帖子。有谁知道是否可以执行此操作或替代策略来实现我隐藏和避免重复 HttpTrigger 样板代码的目标?
--编辑--我还尝试添加带有 [ModuleInitializer]
属性的静态构造函数,如下所示:
[ModuleInitializer]
public static void Init()
{
AppDomain.CurrentDomain.Load("Atkins.DynamicObjects.AssetCore"); // manually load into the current domain
}
但是,此策略不成功,因为它不会在程序集加载时调用,而是仅在首次访问时调用。 - 调试确认,直到 JobHost 加载并扫描程序集之后,执行才到达此 block - 所以这是不好的。
我想知道的另一个想法是使用 assemblyload 事件,但除非我弄错了,否则事件处理程序需要添加到 JobHost 的源代码中 - 因此它是我自己代码的上游这对我来说不是一个选择。
最佳答案
有一个FunctionsInDependencies
property在用于构建函数的 MSBuild 任务中可用,这应该可以帮助您实现这一目标。
关于c# - JobHost 未检测到引用程序集中的 Azure HttpTriggers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76822033/
当前 我有一个不断增长的功能应用程序库(目前有 14 个),它们创建不同的 3D 模型,但根据设计,每个模型都具有相同的 HttpTriggers,以便中央系统可以调用/触发它们来构建和返回他们的模型
我正在尝试使用 Microsoft.Azure.WebJobs 自行托管 JobHost 并包含 Http 扩展,但我似乎无法弄清楚 Uri/port 是什么它托管在 这是我的主要方法: static
与 Azure WebJobs SDK 关联的大多数示例都具有如下所示的启动代码: static void Main() { JobHost h = new JobHost(); h.
这是我的代码: JobHost host = new JobHost(config); host.CallAsync(typeof(Program).GetMethod("Auth")).GetAwa
一旦我通过 RunAndBlock 启动了 JobHost,是否可以动态地将函数绑定(bind)到它?我对使用服务总线执行此操作特别感兴趣。我设想了一种场景,其中服务收到通知,表明特定队列上有一种新型
在 C# 中 WebJob ,我能够像这样手动调用公共(public)静态类方法: using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJo
我是一名优秀的程序员,十分优秀!