我正在使用.NET Framework 4.5.2构建非常小的Web API。在Visual Studio中,我以带有Web API 2引用的Empty开始该项目。我想利用依赖注入,因此我按照Microsoft this tutorial中的说明进行了所有工作,并将Unity包含在我的项目中。 一切正常, API发挥了预期的作用并发送了预期的响应,但是...在Visual Studio的 Output 选项卡中,我注意到了许多例外情况在启动API之后立即被静默引发(“ Eccezionegenerata”表示“引发异常”): 这让我很烦。我担心API的稳定性和可靠性。以下是DI过程中涉及的代码。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// As explained in the tutorial
var container = new UnityContainer();
container.RegisterType<IDecrypter, Decrypter>(new HierarchicalLifetimeManager());
container.RegisterType<IMyRepository, MyRepository>(new HierarchicalLifetimeManager());
config.DependencyResolver = new UnityResolver(container);
// Routing follows...
}
}
用于内部加密的 Decrypter 。
public interface IDecrypter
{
string Decrypt(string input);
}
public class Decrypter : IDecrypter
{
public string Decrypt(string input) { /* ... */ }
}
用于访问数据库的存储库。
public interface IMyRepository
{
// Interface Methods...
}
public abstract class BaseRepository
{
private readonly IDecrypter Decrypter;
public BaseRepository(IDecrypter decrypter)
{
Decrypter = decrypter;
// More code...
}
// More code...
}
public class MyRepository : BaseRepository, IMyRepository
{
public MyRepository(IDecrypter decrypter) : base(decrypter)
{ }
// Implementations of the interface methods...
}
API唯一的控制器:
public class MyController : ApiController
{
private readonly IMyRepository myRepository;
public MyController(IMyRepository _myRepository)
{
myRepository = _myRepository;
}
}
有人知道发生了什么事吗?