Siguiendo con el uso de la inyección de dependencias para WCF services, ¿hay alguna manera de utilizar DI para WCF validadores, por lo que se podía hacer esto:Cómo inyectar un objeto en una clase de validador WCF
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);
}
}
EDITAR - Intenté aplicar el consejo de Dzmitry a mi extensión de comportamiento personalizado, ya que mi validador está definido en app.config. Lamentablemente consigo un MethodMissingException, ya WCF quiere mi validador para tener un constructor por defecto:
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)
Aquí es mi clase de comportamiento:
public class DependencyInjectionServiceBehavior : BehaviorExtensionElement, IServiceBehavior
{
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
serviceHostBase.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = DISupport.Kernel.Get<IService>();
}
}
¿Qué es un "Validador de WCF"? –
No sé qué más llamarlo. Si quiere que sea específico, un "validador wcf" en este caso sería una implementación personalizada de UserNamePasswordValidator. –
John. ¿Por qué eres tan arrogante? También podría ser así si tuviera más de 56,000 puntos de repetición, pero en cierto modo eres condescendiente. Estas opiniones no solo provienen de esta publicación, sino también de otras respuestas y temas en los que ha estado involucrado, en los que, en algunos casos, se muestra brutal y malintencionado. – SideFX