1

我有 aspNetCompatibility = "true" 的 wcf + rest web 服务。为了提供自定义身份验证,我编写了 asp.net http 模块:IHttpModule。代码非常简单:只需将一些主体分配给 Thread.CurrentPrinicpal 属性。

在方法执行期间,我仍然将“空/默认”主体作为 Thread.CurrentPrincipal 的值。我还注意到模块和操作执行中有不同的线程 ID(Thread.CurrentThread)。我建议 wcf 提供一个新线程来执行操作,但没有找到任何证据。

所以问题是:我是对的吗?wcf 是否允许控制该行为?我在这里很困惑,因为创建新线程会自动将主体移动到新线程。因此 wcf '清理'他们..

与 principalPermissionMode="None" 相同的问题。

我会很感激任何想法!

干杯!

4

1 回答 1

0

IMO - 当您从已经坐过的线程运行它时,线程将收到委托人。

Wcf 确实以自己的方式管理线程(部分由 InstanceMode 控制 - PerCall、PerSession、...)。所以他们不会传播你的线程细节。

可能您应该考虑使用其他模型进行身份验证。有关自定义身份验证的更多详细信息,请参阅此帖子:http: //blogs.msdn.com/b/astoriateam/archive/2010/07/21/odata-and-authentication-part-6-custom-basic-authentication.aspx

于 2013-04-18T13:14:19.343 回答