我有一个经理班:
public class UserManager : IUserManager
{
private readonly IGraphApiClient _client;
private readonly IUserDataProvider _userDataProvider;
private readonly IMapper _mapper;
public UserManager(IGraphApiClient client, IMapper mapper, IUserDataProvider _userDataProvider)
{
_mapper = mapper;
_client = client;
_userDataProvider = userDataProvider;
}
public IEnumerable<Customer> GetAssociatedCustomersByUserEmail(string email)
{
var customers = _userDataProvider.GetAssociatedCustomersByUserEmail(email);
return customers;
}
当我删除UserManager构造函数签名中的
IUserDataProvider _userDataProvider
和_userDataProvider = userDataProvider;
时,我的Web api将“起作用”,因为我可以命中一个断点,并且可以调用一个端点。很明显,在GetAssociatedCustomerByUserEmail()
中引发了异常,因为我没有注入IUserDataProvider。当我保留这些代码行时,我所有的Web API都将返回500错误状态,并且我无法遇到任何断点。
起初我意识到我忘记注册IUserDataProvider,但是即使在startup.cs中注册后,我仍然遇到相同的问题。
services.AddScoped<IUserDataProvider, UserDataProvider>();
services.AddScoped<IUserManager, UserManager>();
除此特定任务外,我的所有其他控制器,经理,数据提供者等均在工作。我想不明白。我已经检查了所有访问器(公共访问与私有访问),它们似乎合法。此时,我已经没有足够的东西进行调查了。
最佳答案
从nuget安装Install-package Microsoft.AspNetCore.Diagnostics
将Configure
中的startup.cs
方法更改为以下内容,然后您将看到错误消息
注意它应该在任何其他行之前
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
env.EnvironmentName = EnvironmentName.Development;
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/error");
}
app.UseStatusCodePages();
更多信息https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling