.net POST请求上的Thread.CurrentPrincipal列表,但不是GET请求

.net POST请求上的Thread.CurrentPrincipal列表,但不是GET请求,.net,wcf,rest,c#-4.0,httpcontext,.net,Wcf,Rest,C# 4.0,Httpcontext,我有一个restfulwcf应用程序,它托管在一个WebProject中。我正在使用HttpModule对传入请求的头进行身份验证,如果头和URL有效,我将两者都设置 System.Threading.Thread.CurrentPrincipal = myCustomPrincipal; 这非常适合GET请求,但当我发布帖子并检查Thread.CurrentPrincipal时,它被设置为WindowsPrincipal类的实例。我在一些博客文章中读到,HttpContext.Current

我有一个restfulwcf应用程序,它托管在一个WebProject中。我正在使用HttpModule对传入请求的头进行身份验证,如果头和URL有效,我将两者都设置

System.Threading.Thread.CurrentPrincipal = myCustomPrincipal;
这非常适合GET请求,但当我发布帖子并检查Thread.CurrentPrincipal时,它被设置为WindowsPrincipal类的实例。我在一些博客文章中读到,HttpContext.Current.User和Thread.CurrentPrincipal都应该设置为同一个IPrincipal对象,但是当我指定

HttpContext.Current.User = myCurrentPrincipal;
我的服务从来没有被点击过,一条401未经授权的消息被发回,而我从未实际分配过

注意,我在我的context_PostAuthorizeRequest方法中分配这些主体,该方法已附加到上下文的类似命名处理程序

请帮忙。我做错了什么?下面是我的webconfig的HttpModule配置示例:

<httpModules>
  <add name="PublicServiceSecurity" type="Company.PublicService.PublicServiceSecurity,PublicService" />
  <add name="ErrorModule" type="Company.Web.ErrorModule,WebComponentLibrary" />
  <add name="HbnSessionModule" type="Company.Web.HbnSessionModule,WebComponentLibrary" />
</httpModules>


注意:只要我删除HttpContext.Current.User分配,我的WCF服务就会像预期的那样受到影响(几乎仍然得到WindowsPrincipal而不是myCustomPrincipal)。目前,我已经将我对HttpContext.User的分配移到了实际的WCF服务中,并且我不再使用HttpModule,但是我发现HttpContext.User的主体在模块和我的WCF服务之间丢失了,这是非常奇怪的。改用WCF上下文。您使用的REST技术是什么?@Regfor,我不知道您在问什么。我将WCF作为svc托管在asp.net网站中,因此我能够对所有请求使用httpmodules。我不能在httpmodule中使用WCF上下文,因为它在创建WCF结构之前,对吗?