asp.net mvc core 以下方法或属性之间的调用不明确:
asp.net mvc core The call is ambiguous between the following methods or properties:
我正在开发一个应用程序,但在 Startup.cs 部分 类 中出现错误,我无法找到出现此错误的原因:
以下方法或属性之间的调用不明确:
Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.Configure(Microsoft.Extensions.DependencyInjection.IServiceCollection, System.Action)
Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.Configure(Microsoft.Extensions.DependencyInjection.IServiceCollection, System.Action)
我的两个部分Startup.cs类是
using Microsoft.Extensions.DependencyInjection;
using System.Security.Claims;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
namespace GiftUWish.WebAPI
{
public partial class Startup
{
private void SetServices(IServiceCollection services)
{
//PROFILE service and repository
services.AddScoped<IProfileService, ProfileService>();
services.AddScoped<IProfileRepository, ProfileRepository>();
////GIFT service and repository
services.AddScoped<IBankAccountService, BankAccountService>();
services.AddScoped<IBankAccountRepository, BankAccountRepository>();
//EVENT service and repository
services.AddScoped<ICreditCardService, CreditCardService>();
services.AddScoped<ICreditCardRepository, CreditCardRepository>();
//CREDIT CARD INFORMATION serice and repository
services.AddScoped<IPayPalService, PayPalService>();
services.AddScoped<IPayPalRepository, PayPalRepository>();
//CHIPPED IN serive and repository
services.AddScoped<IShippingAdressService, ShippingAdressService>();
services.AddScoped<IShippingAdressRepository, ShippingAdressRepository>();
//UNIT OF WORK
services.AddScoped<IUnitOfWork, UnitOfWork>();
//Authentication-Token , Header which contains information about user from Identity Server
services.AddTransient<ClaimsPrincipal>(s => s.GetService<IHttpContextAccessor>().HttpContext.User);
//Facebook Graph API
services.AddScoped<IApi, Service.FacebbokGraph.API>();
//Setup configuration settings form appsettings.json
services.Configure<FacebookApiSettings>(Configuration.GetSection("Facebook"));
services.Configure<BrainTreeSettings>(Configuration.GetSection("Paiment:BrainTree"));
services.Configure<PayPalAdaptivePaymentsAPI>(Configuration.GetSection("Paiment:PayPal:PayPalAdaptivePaymentsAPI"));
services.Configure<PayPalNonAdaptivePaymentsAPI>(Configuration.GetSection("Paiment:PayPal:PayPalNonAdaptivePaymentsAPI"));
services.Configure<PayPalPayFlow>(Configuration.GetSection("Paiment:PayPal:PayPalPayFlow"));
services.AddSingleton<IConfiguration>(Configuration);
}
}
}
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Serialization;
using System.Threading.Tasks;
namespace GiftUWish.WebAPI
{
public partial class Startup
{
public static IConfiguration Configuration { get; set; }
private readonly string Audience = "https://localhost:44362/";
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services
.AddMvc(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
})
.AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
services.Configure<CookieAuthenticationOptions>(options =>
{
options.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = ctx =>
{
if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200)
{
ctx.Response.StatusCode = (int)System.Net.HttpStatusCode.Unauthorized;
return Task.FromResult<object>(null);
}
else
{
ctx.Response.Redirect(ctx.RedirectUri);
return Task.FromResult<object>(null);
}
}
};
});
//Add DI and other services
SetServices(services);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseDeveloperExceptionPage();
CookieAuthenticationOptions options = new CookieAuthenticationOptions();
options.AuthenticationScheme = "Cookies";
options.CookieName = "GUW Cookie";
options.AutomaticAuthenticate = true;
options.AutomaticChallenge = true;
options.LoginPath = new PathString("/Account/Login");
options.Events = new CustomCookieAuthenticationEvents();
app.UseCookieAuthentication(options);
app.UseMvc();
}
}
}
Project.json 依赖关系
"dependencies":{
"Braintree": "2.61.0",
"Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Identity": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.IdentityModel.Tokens": "5.0.0",
"Microsoft.Owin.Security.Cookies": "3.0.1",
"Microsoft.Owin.Security.OAuth": "3.0.1",
"Newtonsoft.Json": "9.0.1",
"PayPal": "1.7.3",
"PayPalAdaptiveAccountsSDK": "2.9.110",
"PayPalAdaptivePaymentsSDK": "2.15.117",
"PayPalCoreSDK": "1.7.1",
"PayPalMerchantSDK": "2.16.117",
"System.IdentityModel.Tokens.Jwt": "5.0.0"
},
错误在这里:
services.Configure<FacebookApiSettings>(Configuration.GetSection("Facebook"));
services.Configure<BrainTreeSettings>(Configuration.GetSection("Paiment:BrainTree"));
services.Configure<PayPalAdaptivePaymentsAPI>(Configuration.GetSection("Paiment:PayPal:PayPalAdaptivePaymentsAPI"));
services.Configure<PayPalNonAdaptivePaymentsAPI>(Configuration.GetSection("Paiment:PayPal:PayPalNonAdaptivePaymentsAPI"));
services.Configure<PayPalPayFlow>(Configuration.GetSection("Paiment:PayPal:PayPalPayFlow"));
thnx
这是因为您混合了包版本 - 您将 rc1 (Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final"
) 与 1.0.0 混合在一起。将所有内容移至 1.0.0。
我正在开发一个应用程序,但在 Startup.cs 部分 类 中出现错误,我无法找到出现此错误的原因:
以下方法或属性之间的调用不明确: Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.Configure(Microsoft.Extensions.DependencyInjection.IServiceCollection, System.Action) Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions.Configure(Microsoft.Extensions.DependencyInjection.IServiceCollection, System.Action)
我的两个部分Startup.cs类是
using Microsoft.Extensions.DependencyInjection;
using System.Security.Claims;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
namespace GiftUWish.WebAPI
{
public partial class Startup
{
private void SetServices(IServiceCollection services)
{
//PROFILE service and repository
services.AddScoped<IProfileService, ProfileService>();
services.AddScoped<IProfileRepository, ProfileRepository>();
////GIFT service and repository
services.AddScoped<IBankAccountService, BankAccountService>();
services.AddScoped<IBankAccountRepository, BankAccountRepository>();
//EVENT service and repository
services.AddScoped<ICreditCardService, CreditCardService>();
services.AddScoped<ICreditCardRepository, CreditCardRepository>();
//CREDIT CARD INFORMATION serice and repository
services.AddScoped<IPayPalService, PayPalService>();
services.AddScoped<IPayPalRepository, PayPalRepository>();
//CHIPPED IN serive and repository
services.AddScoped<IShippingAdressService, ShippingAdressService>();
services.AddScoped<IShippingAdressRepository, ShippingAdressRepository>();
//UNIT OF WORK
services.AddScoped<IUnitOfWork, UnitOfWork>();
//Authentication-Token , Header which contains information about user from Identity Server
services.AddTransient<ClaimsPrincipal>(s => s.GetService<IHttpContextAccessor>().HttpContext.User);
//Facebook Graph API
services.AddScoped<IApi, Service.FacebbokGraph.API>();
//Setup configuration settings form appsettings.json
services.Configure<FacebookApiSettings>(Configuration.GetSection("Facebook"));
services.Configure<BrainTreeSettings>(Configuration.GetSection("Paiment:BrainTree"));
services.Configure<PayPalAdaptivePaymentsAPI>(Configuration.GetSection("Paiment:PayPal:PayPalAdaptivePaymentsAPI"));
services.Configure<PayPalNonAdaptivePaymentsAPI>(Configuration.GetSection("Paiment:PayPal:PayPalNonAdaptivePaymentsAPI"));
services.Configure<PayPalPayFlow>(Configuration.GetSection("Paiment:PayPal:PayPalPayFlow"));
services.AddSingleton<IConfiguration>(Configuration);
}
}
}
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Serialization;
using System.Threading.Tasks;
namespace GiftUWish.WebAPI
{
public partial class Startup
{
public static IConfiguration Configuration { get; set; }
private readonly string Audience = "https://localhost:44362/";
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services
.AddMvc(options =>
{
options.Filters.Add(new RequireHttpsAttribute());
})
.AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
services.Configure<CookieAuthenticationOptions>(options =>
{
options.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = ctx =>
{
if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200)
{
ctx.Response.StatusCode = (int)System.Net.HttpStatusCode.Unauthorized;
return Task.FromResult<object>(null);
}
else
{
ctx.Response.Redirect(ctx.RedirectUri);
return Task.FromResult<object>(null);
}
}
};
});
//Add DI and other services
SetServices(services);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseDeveloperExceptionPage();
CookieAuthenticationOptions options = new CookieAuthenticationOptions();
options.AuthenticationScheme = "Cookies";
options.CookieName = "GUW Cookie";
options.AutomaticAuthenticate = true;
options.AutomaticChallenge = true;
options.LoginPath = new PathString("/Account/Login");
options.Events = new CustomCookieAuthenticationEvents();
app.UseCookieAuthentication(options);
app.UseMvc();
}
}
}
Project.json 依赖关系
"dependencies":{ "Braintree": "2.61.0", "Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final", "Microsoft.AspNetCore.Diagnostics": "1.0.0", "Microsoft.AspNetCore.Identity": "1.0.0", "Microsoft.AspNetCore.Mvc": "1.0.0", "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", "Microsoft.Extensions.Configuration.Json": "1.0.0", "Microsoft.Extensions.Logging": "1.0.0", "Microsoft.Extensions.Logging.Console": "1.0.0", "Microsoft.Extensions.Logging.Debug": "1.0.0", "Microsoft.Extensions.Options": "1.0.0", "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", "Microsoft.IdentityModel.Tokens": "5.0.0", "Microsoft.Owin.Security.Cookies": "3.0.1", "Microsoft.Owin.Security.OAuth": "3.0.1", "Newtonsoft.Json": "9.0.1", "PayPal": "1.7.3", "PayPalAdaptiveAccountsSDK": "2.9.110", "PayPalAdaptivePaymentsSDK": "2.15.117", "PayPalCoreSDK": "1.7.1", "PayPalMerchantSDK": "2.16.117", "System.IdentityModel.Tokens.Jwt": "5.0.0" },
错误在这里:
services.Configure<FacebookApiSettings>(Configuration.GetSection("Facebook"));
services.Configure<BrainTreeSettings>(Configuration.GetSection("Paiment:BrainTree"));
services.Configure<PayPalAdaptivePaymentsAPI>(Configuration.GetSection("Paiment:PayPal:PayPalAdaptivePaymentsAPI"));
services.Configure<PayPalNonAdaptivePaymentsAPI>(Configuration.GetSection("Paiment:PayPal:PayPalNonAdaptivePaymentsAPI"));
services.Configure<PayPalPayFlow>(Configuration.GetSection("Paiment:PayPal:PayPalPayFlow"));
thnx
这是因为您混合了包版本 - 您将 rc1 (Microsoft.AspNet.Mvc.Core": "6.0.0-rc1-final"
) 与 1.0.0 混合在一起。将所有内容移至 1.0.0。