WCF设置线程.通过IHttpModule



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

在方法执行期间,我仍然得到'empty/default' principal作为Thread.CurrentPrincipal的值。我还注意到在模块和操作执行中有不同的线程id (thread . currentthread)。我有一个建议,wcf提供一个新的线程来执行操作,但没有找到任何证据。

那么问题是:我对吗?wcf允许控制这种行为吗?我在这里很困惑,因为创建新线程会自动将主体移动到新线程。所以我要"清理"它们。

与principalPermissionMode="None"相同。

我将感谢任何想法!

干杯!

IMO -当你从一个已经存在的线程中运行它时,线程将接收到Principal。

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

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

最新更新