有人能指出我如何正确配置ASP.Net托管的WCF 4.0服务,以便仅为某些服务方法模拟调用者的凭据,但允许匿名访问其他服务方法
我在MSDN上已经阅读了很多相关内容,但是我读的越多,我就越困惑。也许我只是一个笨蛋,但这似乎比它应该更难: - (
我已经查看了SE上的帖子,但似乎都没有指向端到端的示例或教程。 CodePlex上有一个WCF指导文件,但似乎已经过时了,并且自2008年以来一直没有更新。
这里的任何帮助都会非常感激。
答案 0 :(得分:1)
这可以通过OperationBehaviorAttribute.Impersonation属性
来完成[ServiceContract]
interface ISelectiveImpersonationExample
{
[OperationContract]
void ThisUsesImpersonation();
[OperationContract]
void ThisDoesNotUseImpersonation();
}
// Implementation
class SelectiveImpersonationExampleImpl : ISelectiveImpersonationExample
{
[OperationBehavior(Impersonation=ImpersonationOption.Required)]
public void ThisUsesImpersonation()
{
// ...
}
[OperationBehavior(Impersonation=ImpersonationOption.NotAllowed)]
public void ThisDoesNotUseImpersonation()
{
// ...
}
}
确保未将服务的行为ImpersonateCallForAllOperations值设置为true。如果这样做, ThisDoesNotUseImpersonation 函数将抛出InvalidOperationException。
我在这里继续理论,并且实际上并没有在现实生活中完成它。如果它不起作用,请告诉我。