如何解决Blazor WASM 将设置注入 Razor 类库
我的意图是创建一种支付处理服务,我可以将其固定在任何网站的一侧。我的问题是注入设置,例如 Stripe 公钥、Paypal 商家 ID 以及服务器上用于发送令牌和对 Stripe 收费的特定 URL。
针对这个问题进行了简化(Payments
项目最终将成为 dll 的),但项目结构如下所示:
WebApp 是 ASP.NET Core 托管的 Blazor WASM 项目模板。 WebApp.Client
依赖于 Payments.Shared
和 Payments.Ui
,而 WebApp.Server
也依赖于 Payments.Backend
(对于 Stripe 充电响应等模型)。
由于我想在任何网站上使用此付款服务,而且每个网站的这些服务都不同,因此我需要在启动时在 PaymentSettings.cs
中设置道具。
有没有办法做到这一点?如果重要的话,我只打算与 Blazor WASM 网站一起使用。
我觉得我可以在 WebApp.Client
的 string[] args
方法中通过 Program.cs
将这些设置传递给 Main
:
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 请求。
非常感谢任何帮助。
解决方法
我想多了。由于都是公开信息,我只是将信息硬编码到 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();
}
可能不是最佳实践,但对我有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。