WCF客户端模拟

时间:2010-07-28 15:56:57

标签: wcf wcf-security wcf-client walkthrough

有人能指出我如何正确配置ASP.Net托管的WCF 4.0服务,以便仅为某些服务方法模拟调用者的凭据,但允许匿名访问其他服务方法

我在MSDN上已经阅读了很多相关内容,但是我读的越多,我就越困惑。也许我只是一个笨蛋,但这似乎比它应该更难: - (

我已经查看了SE上的帖子,但似乎都没有指向端到端的示例或教程。 CodePlex上有一个WCF指导文件,但似乎已经过时了,并且自2008年以来一直没有更新。

这里的任何帮助都会非常感激。

1 个答案:

答案 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

我在这里继续理论,并且实际上并没有在现实生活中完成它。如果它不起作用,请告诉我。