0

有人可以向我指出一个[相对] 简单的演练,了解如何正确配置 ASP.Net 托管的 WCF 4.0 服务,以模拟服务的某些方法的调用者凭据,但允许匿名访问其他方法?

我已经在 MSDN 上阅读了很多关于此的内容,但我阅读的越多,我就越感到困惑。也许我只是个笨蛋,但这似乎比应该做的要难:-(

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

非常感谢这里的任何帮助。

4

1 回答 1

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

我在这里进行理论,并没有在现实生活中真正做到这一点。如果它不起作用,请告诉我。

于 2010-07-28T21:49:45.273 回答