用于依赖性注入的Unity容器会引发异常,但Web API仍然有效

时间:2019-07-16 13:31:01

标签: c# asp.net-web-api unity-container

我正在使用.NET Framework 4.5.2构建非常小的Web API。在Visual Studio中,我以带有Web API 2引用的Empty开始该项目。我想利用依赖注入,因此我按照Microsoft this tutorial中的说明进行了所有工作,并将Unity包含在我的项目中。 一切正常 API发挥了预期的作用并发送了预期的响应,但是...在Visual Studio的 Output 选项卡中,我注意到了许多例外情况在启动API之后立即被静默引发(“ Eccezionegenerata”表示“引发异常”): Silent exceptions raised by Unity 这让我很烦。我担心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;
    }
} 

有人知道发生了什么事吗?

0 个答案:

没有答案