当前位置: 首页 > 知识库问答 >
问题:

通过依赖注入将类设置注册到Azure函数应用程序

廉元龙
2023-03-14

我正在从升级我们的一个Azure功能应用程序。NET Core 3.1 to。NET 6。因此,我需要实现依赖注入。

我们的项目还利用了第三方API,我们有自己的项目来与该API进行通信。该项目有一个类对象,我们使用设置填充该对象,然后将其传递到我们的API注册调用中,以促进与此第三方API的通信。大致如下:

public class ThirdPartySettings
{
     public string AppId { get; set };
     public string AppSecret { get; set };
     public string PostBackUserName { get; set };
     public string PostBackPassword { get; set; };
     public int Timeout { get; set; }
}

在我们的主web项目中,我们以前利用Autofac进行依赖注入,我们的注册看起来像这样:

builder
   .RegisterInstance(new ThirdPartySettings
   {
        AppId = ConfigurationManager.AppSettings.Get("HostedEngineAppId"),
        AppSecret = ConfigurationManager.AppSettings.Get("HostedEngineSecurityKey"),
        PostBackUserName = ConfigurationManager.AppSettings.Get("PostbackUserName"),
        PostBackPassword = ConfigurationManager.AppSettings.Get("PostbackPassword"),
        Timeout = 600000
   })
   .AsSelf();

这将在我们的应用程序中为其生命周期范围注册这些设置。

然而,我很难找出在我的Program.cs主函数中使用微软的Azure函数的等价函数。Extensions.DependencyInjection(而不是Autofac)。我尝试了AddOptions()和AddOptions()的几种变体,如下所示:

services.AddOptions(new ThirdPartyOptions()
{
     AppId = Environment.GetEnvironmentVariable("HostedEngineAppId"),
     AppSecret = Environment.GetEnvironmentVariable("HostedEngineSecurityKey"),
     PostBackUserName = Environment.GetEnvironmentVariable("PostbackUser"),
     PostBackPassword = Environment.GetEnvironmentVariable("PostbackPassword"),
     Timeout = 600000,
});
services.AddScoped<IThirdPartyApi, ThirdPartyApi>();
services.AddScoped<IThirdPartyService, ThirdPartyService>();

或者

services.AddOptions<ThirdPartyOptions>(options =>
{
     AppId = Environment.GetEnvironmentVariable("HostedEngineAppId"),
     AppSecret = Environment.GetEnvironmentVariable("HostedEngineSecurityKey"),
     PostBackUserName = Environment.GetEnvironmentVariable("PostbackUser"),
     PostBackPassword = Environment.GetEnvironmentVariable("PostbackPassword"),
     Timeout = 600000,
});
services.AddScoped<IThirdPartyApi, ThirdPartyApi>();
services.AddScoped<IThirdPartyService, ThirdPartyService>();

但无济于事。相对而言,我是使用较新版本的新手。NET核心并从头开始设置依赖注入。

有人能帮忙吗?

共有1个答案

宋健柏
2023-03-14

我已经开始在github中创建这些参考项目。它们是我需要设置的常见事物。我没有搜索基础代码,而是有自己的代码。如果你还没弄明白的话,我想这会满足你所有的需要。AzureFunctionDemo。我还没有更新到.NET6,但这并不困难。

 类似资料:
  • 我有一个时间触发的Azure功能

  • 我有一个关于 azure 函数 v1 中的依赖注入的新问题。 实际情况: 我有一个azure函数V1,我想在其中引用我的业务服务,而无需重新发明轮子即可使用我的服务。我在Internet上搜索并找到了这篇来自Microsoft的有趣文章。 但是,它似乎只适用于azure函数v2(. net core),因为每当我尝试安装时,我总是收到以下错误: 检测到Microsoft.Azure.WebJobs

  • 我已经成功地将依赖注入用于我自己的自定义服务,如本文所述。 我想要的是在我的定制服务中使用框架作为参数注入Azure函数的绑定器。用作函数参数的示例: 我尝试将Binder作为参数添加到我的服务构造函数并让框架创建我的服务实例,但传入的Binder始终为空。 我的服务构造函数: 注册如下: 有人知道这是否可能吗?如果可能,我做错了什么?

  • 我使用 .NET 5 创建了一个 Azure 函数版本 3,并通过类的构造函数进行依赖关系注入。请参阅下面的虚拟代码: 在类中添加了范围。 程序文件如下所示: 在文件中有这行代码: 问题是当我想运行 Azure 函数时。我有这个警告: 未找到作业函数。试着公开你的作业类和方法。如果您使用的是绑定扩展(例如Azure存储、ServiceBus、定时器等),请确保您在启动代码中调用了扩展的注册方法(例

  • 作者:陈希章 发表于2017年3月22日 在此前的文章中,我给大家介绍了分别用Graph 浏览器以及第三方工具(POSTMAN)快速体验Microsoft Graph的功能,其中有一个重要的环节就是,开发人员需要访问Microsoft Graph的话,其实是事先需要注册一个应用程序的。Graph 浏览器是特例,因为这个应用程序是微软官方注册好的。而大家在POSTMAN这篇文章中已经看到我注册的自定

  • 这是模块类 这是我的viewmodel构造函数 当我运行应用程序时,我得到这个错误,我认为不要在模块中注入所需的应用程序上下文,任何帮助都会被赞赏 C:\XYZ\XYZ\AndroidStudioProjects\CarAndroid\app\build\generate\source\kapt\debug\com\sw\car\baseclasses\CarApp_HiltComponents.