在模拟上下文之外调用 WCF 服务?

Posted

技术标签:

【中文标题】在模拟上下文之外调用 WCF 服务?【英文标题】:Call a WCF service outside of the impersonation context? 【发布时间】:2010-07-30 11:26:23 【问题描述】:

我在 WCF 中遇到了模拟问题。即,我从 ASP.NET 中调用命名管道服务并启用模拟。这失败了(由于管道上的权限阻止了网络中的任何人)。那么,有什么方法可以在模拟上下文之外进行调用?我不需要冒充进行此调用,但看不到任何这样做的方法。

有人有什么想法吗?

谢谢 马特

PS。我需要通过配置以声明方式执行此操作...

【问题讨论】:

【参考方案1】:

我很幸运,我需要禁用模拟的服务位于没有其他人使用的 IIS 端点上,我可以很高兴地更改 web.config 中的身份验证/授权参数,以便授予访问权限给匿名用户。不是修复,而是变通方法。

据我所知,如果我想在代码中执行此操作,我会将客户端封装在对 WindowsIdentity.Impersonate(IntPtr.Zero) 的调用中,这显然与调用 Win32 RevertToSelf 相同。不过,我不知道在处理此上下文时会发生什么(撤消是否重新模拟了最初模拟的用户?还是恢复卡住了?)

【讨论】:

以上是关于在模拟上下文之外调用 WCF 服务?的主要内容,如果未能解决你的问题,请参考以下文章

WCF实例上下文模式与并发模式对性能的影响

WCF 暂停调用

与 OData 控制器等效的 Odata WCF 服务功能

wcf rest 服务用于安卓和ISO调用5-------验证

WCF系列教程之WCF实例化

绑定属性消息在此上下文中不支持值 mtom