【发布时间】:2018-07-31 15:09:38
【问题描述】:
我正在执行将成员资格提供程序添加到 ASP.Net Core 应用程序的配置中的问题。我必须添加它,因为它引用了包含遗留代码的旧项目并引用了System.Web.ApplicationServices 的程序集。在这个程序集中,流程转到行,它检查提供者的名称是否不为空。
if ( providerName == null || SystemWebProxy.Membership.Providers[providerName] == null )
{
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, ApplicationServicesStrings.Membership_provider_name_invalid), "providerName" );
}
但无论如何,我在appsettings.json 中添加了必要的实现:
"Membership": {
"DefaultProvider": "blahblah",
"Providers": {
"Add": {
...
"Name": "blahblah"
...
}
}}
在启动类中,我通过以下方式配置sqlMembershipProvider:
services.Configure<System.Web.Security.SqlMembershipProvider>(Configuration.GetSection("Membership"));
谁能告诉我,为什么我没有在配置中实现我的提供程序?也许我走错路了?
【问题讨论】:
-
Configure 将 IOption 接口添加到 DI 中,该接口被注入到其他类中。要初始化 SqlMembershipProvider,您需要通过添加 Transient、Scope 或 Singleton 依赖项来创建它,例如。 AddTransient
() (我不知道该类的构造函数,但您可能需要使用 AddTransient(x=>new SqlMembershipProvider(...)) 手动初始化它。或者您可以包装该类并注入 IOption 到构造函数 -
好的,我在我的服务中获得了一个 SQLMembershipProvider 实例,但实现为空。我是否需要通过添加另一个变量来初始化它,例如:
var abc = new SqlMembershipProvider(); abc.Initialize();? -
如果我是你,我会使用 .net core app.config 文件来实现设置
标签: c# asp.net-core asp.net-membership