When using DI in Controller shall I call IDisposable on any injected service?
When using Dependency Injection (DI) in a controller, it’s generally not necessary to manually call
Dispose() on injected services. The DI container and the ASP.NET Core framework handle the disposal of disposable objects for you.
In ASP.NET Core, when a controller is instantiated by the framework, the DI container resolves the dependencies and provides them through constructor injection. If any of the injected dependencies implement the
IDisposable interface, the framework takes care of calling the
Dispose() method when the controller is no longer needed, typically at the end of the HTTP request lifecycle.
The framework ensures that the
Dispose() method is called on disposable objects to release any unmanaged resources they may hold. This happens automatically, so you don’t need to manually call
Dispose() on the injected services within the controller.
However, there may be scenarios where you have a specific need to dispose of a service manually. In such cases, you can implement the
IDisposable interface in your controller and call the
Dispose() method on the service when appropriate. But it’s important to be cautious when manually disposing injected services and consider whether it is necessary and if it could conflict with the automatic disposal performed by the framework.
In summary, it is generally not required to manually call
Dispose() on injected services in a controller when using DI in ASP.NET Core. The framework will handle the disposal of disposable objects for you.