I am using Unity.WCF to inject dependencies for WCF service. Problem occurs when I set my service to InstanceContextMode.Single
.
I found on Google that when InstanceContextMode
is set to Single
, InstanceProvider
is not called. There is also a workaround for this but I was wondering if there is some built-in support for this in Unity.WCF because apparently this is a well known problem.
I found the information here: Enabling InstanceProvider
for singleton services.
I will cite Paul Hiles comment on the same question you asked:
Using
InstanceContextMode.Single
makes your service scale very badly so is best avoided in most cases, particularly if it is just being used to allow AppFabric auto-start. You can safely remove theServiceBehavior
attribute and do it another way.With Unity.WCF, you can add your initialisation code to the
ConfigureContainer
method of theWcfServiceFactory
class that is created when you add the Unity.WCF NuGet package. This will only be executed once for the lifetime of the service.BTW, you should not be passing the Unity container into your service. Add any components that your service uses into the constructor (e.g. repositories, helpers etc.) and also register then with Unity using the
ConfigureContainer
method. When your service is instantiated, the dependencies will be injected automatically.
You may also find article from this MSDN series useful.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With