IAuthorizationPolicy
,这在基于服务的每个方法完成时似乎有效,但是当服务类本身被标记为需求时,我会引发异常。
How To â Use Username Authentication with Transport Security in WCF from Windows Forms
Membership
实施。我的
授权策略
实施(
HttpContextPrincipalPolicy
)本质上是相同的。
我的基本部分
Web.config
<serviceBehaviors\>
<behavior name="MyBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceAuthorization principalPermissionMode="UseAspNetRoles"
roleProviderName="UserProvider">
<authorizationPolicies>
<clear/>
<add policyType="Website.FormsAuth.HttpContextPrincipalPolicy,Website"/>
</authorizationPolicies>
</serviceAuthorization>
</behavior>
</serviceBehaviors>
[PrincipalPermission(SecurityAction.Demand, Role = RoleNames.USER_ADMINISTRATION)]
如果这是在
OperationContract
方法,一切按预期进行。但是,如果它被移动到类本身(它实现
ServiceContract
)我得到了以下异常(大多数额外的东西都被删掉了):
Castle.MicroKernel.ComponentActivator.ComponentActivatorException {
Message = "ComponentActivator: could not instantiate Services.UserService"
InnerException = System.Reflection.TargetInvocationException {
Message = "Exception has been thrown by the target of an invocation."
InnerException = System.Security.SecurityException {
Message = "Request for principal permission failed."
}
}
}
HttpContextPrincipalPolicy公司
正在被呼叫,但是
Evaluate()
不是当需求附加到类时。当它附加到方法时
是
被召唤。所以在这一点上,我已经尽我的新手.NET/WCF/Castle Windsor技能所能。
有没有办法告诉Castle Windsor在执行
计算()