ślad za przy użyciu iniekcji zależnościach dla WCF services, czy jest jakiś sposób korzystania DI dla WCF weryfikatorów, tak, że można to zrobić:Jak wstrzykiwać obiektu do klasy WCF walidatora
public class DIValidator : UserNamePasswordValidator
{
private readonly IService service;
[Inject]
public DIValidator(IService service)
{
this.service = service;
}
public override void Validate(string userName, string password)
{
service.Login(userName, password);
}
}
EDIT - Próbowałem zastosować sugestię Dzmitry'ego do mojego niestandardowego rozszerzenia zachowania, ponieważ mój walidator jest zdefiniowany w app.config. Niestety ja dostaję MethodMissingException, ponieważ WCF chce mój walidator mieć domyślnego konstruktora:
System.MissingMethodException: No default constructor has been defined for this object.
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean
noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
Oto moja klasa zachowanie:
public class DependencyInjectionServiceBehavior : BehaviorExtensionElement, IServiceBehavior
{
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
serviceHostBase.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = DISupport.Kernel.Get<IService>();
}
}
Co to jest "Walidator WCF"? –
Nie wiem, jak inaczej to nazwać. Jeśli chcesz, abym był konkretnym "walidatorem wcf" w tym przypadku byłaby to niestandardowa implementacja UserNamePasswordValidator. –
John. Dlaczego jesteś taki zarozumiały? Mógłbym być taki, gdybym miał ponad 56 000 punktów rep, ale wydajesz się być protekcjonalny. Te opinie pochodzą nie tylko z tego posta, ale także z innych odpowiedzi i wątków, w które zaangażowałeś się, w niektórych przypadkach, gdy postradałeś zmysły. – SideFX