I'm currently implementing Interceptors using Castle DynamicProxy. I
require the interceptor to pick up some custom attributes on my
service layer method, but invocation.Method.GetCustomAttributes
returns nothing. Anything I could be doing wrong?
Intercepted Method:
[SecurityRole(AuthenticationRequired = false, Role =
SystemRole.Unauthorised)]
public virtual void LoginUser(out SystemUser userToLogin, string
username)
{
...
}
Interceptor:
// Checks that a security attribute has been defined
foreach (SecurityRoleAttribute role in
invocation.Method.GetCustomAttributes(typeof(SecurityRoleAttribute),
true))
{
if (!securityAttributeDefined)
securityAttributeDefined = true;
}
I've also tried:
Attribute.GetCustomAttribute(invocation.Method,
typeof(SecurityRoleAttribute), true);
May be a configuration issue. The config code is as follows:
InterceptorsInstaller:
public void Install(IWindsorContainer container,
IConfigurationStore store)
{
container.Register(
Component.For<LoggingInterceptor>().LifeStyle.Transient
);
container.Register(
Component.For<SecurityInterceptor>().LifeStyle.Transient
);
container.Register(
Component.For<ValidationInterceptor>().LifeStyle.Transient
);
}
ServiceInstaller:
public void Install(IWindsorContainer container,
IConfigurationStore store)
{
InterceptorReference[] interceptors = {new
InterceptorReference(typeof(SecurityInterceptor)), new
InterceptorReference(typeof(LoggingInterceptor)), new
InterceptorReference(typeof(ValidationInterceptor)) };
container.Register(AllTypes.FromAssemblyContaining<BaseService>().Pick()
.If(Component.IsInSameNamespaceAs<LoginService>())
.If(t => t.Name.EndsWith("Service"))
.Configure(c => c
.LifeStyle.Transient
.Interceptors(interceptors).Anywhere)
.WithService.AllInterfaces());
}
I'm Using Castle 2.5.1 (from NuGet)/.Net 3.5.
Thanks,
Paul
--
You received this message because you are subscribed to the Google Groups
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.