【问题标题】:Blazor WASM inject settings into a Razor Class LibraryBlazor WASM 将设置注入 Razor 类库
【发布时间】:2021-10-01 20:54:21
【问题描述】:

我的目的是创建一种支付处理服务,我可以将其固定在任何网站上。我的问题是注入设置,例如 Stripe Public Key、Paypal Merchant Id 和服务器上的特定 url 以发送令牌并收取 stripe。

这个问题被简化了(Payments 项目最终将成为 dll 的),但项目结构如下所示:

WebApp 是 ASP.NET Core 托管的 Blazor WASM 项目模板。 WebApp.Client 依赖于 Payments.Shared 和 Payments.Ui 而WebApp.Server 也依赖于 Payments.Backend(对于 Stripe 充电响应等模型)。

由于我想在任何站点上使用此付款服务,并且每个站点的这些服务都不同,我需要在启动时在PaymentSettings.cs 中设置道具。

有没有办法做到这一点?如果这很重要,我只打算与 Blazor WASM 网站一起使用。

我觉得我可以在Program.cs 的Main 方法中通过string[] args 将这些设置传递给WebApp.Client:

public static async Task Main(string[] args)
{
    //omitted for brevity

    //relevant line here
    builder.Services
      .AddSingleton(sp => new Payments.Shared.Infrastructure.PaymentSettings(args));

    await builder.Build().RunAsync();
}

然后从那里进入PaymentSettings.cs的构造函数:

public class PaymentSettings
{
    public PaymentSettings(string[] args)
    {
        //set props from args
    }

    public string PaypalMerchantId { get; set; }
    public string StripeKey { get; set; }
    public string ChargeStripeUrl { get; set; }
}

但我从 WebApp.Server 项目中看不到任何方法。

也许我想多了,我的意思是,如果我至少可以将 WebApp.Server 的基本 url 注入到 Payments.Shared 项目中,然后我可以运行其余部分的 get 请求。

非常感谢任何帮助。

【问题讨论】:

    标签: c# blazor-webassembly payment-processing razor-class-library


    【解决方案1】:

    我 想多了。由于都是公开信息,我只是将信息硬编码到Program.cs 中的WebApp.Client:

    public static async Task Main(string[] args)
    {
        //omitted for brevity
    
        string stripeKey = "Hello dolly";
        string paypalId = "How ye be";
        string chargeStripeUrl = "https://all-about-dolly.com/chargeIt";
    
        //relevant line here
        builder.Services.AddSingleton(sp => new PaymentSettings 
        {
            StripeKey = stripeKey,
            PaypalMerchantId = paypalId,
            ChargeStripeUrl = chargeStripeUrl
        });
    
        await builder.Build().RunAsync();
    }
    

    可能不是最佳做法,但对我有用。

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 2021-04-04
      • 2020-04-27
      • 2021-04-30
      • 2021-04-19
      • 2021-01-17
      • 1970-01-01
      • 2020-06-10
      • 2020-10-17
      相关资源
      最近更新 更多