2010-04-15 23 views
1

我在同一个项目中同时使用了wcf和asp.net项目。 (我在Azure上运行,所以这样更方便)。无法使FormsAuthentication与WCF一起正常工作

我有这个设置在web.config:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 

我的WCF服务装饰有:

[AspNetCompatibilityRequirements(
    RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

随着设置的属性,不应该HttpContext.Current.User是当我在我的wcf服务中运行方法时自动为我设置?目前,HttpContext.Current.User为空,并且不会自动为我设置。

我想如果我使用了aspNetCompatibilityEnabled,那么Application_AuthenticationRequest方法会在执行wcf方法时在Global.asax中触发,但事实并非如此。

.aspxauth cookie正在正确传递给wcf服务,并且我能够手动解密该cookie并设置当前用户。

为什么这不按我期望的方式工作的建议?

+0

欢迎来到StackOverflow!希望你能在这里找到你的答案。快速介绍:如果您发布代码片段或XML /配置文件内容,则应始终突出显示这些行,然后按编辑器工具栏上的“代码”按钮(101 010)以良好地格式化它们,并获得语法突出显示。这让世界变得不同! – 2010-04-15 16:14:07

回答

0

你在

ServiceSecurityContext.Current.PrimaryIdentity 

字段,它可以在您的服务器方法的代码中得到预期的用户身份?它应该是IIdentity后代的某种形式,如果可以的话,会给你用户信息。

+0

'System.ServiceModel.ServiceSecurityContext.Current'为空 – 2010-04-15 16:56:06

+0

好的,所以你没有正式验证WCF服务......你能告诉我们服务器和客户端配置为你的绑定吗?你使用什么样的WCF安全? – 2010-04-15 17:04:30

+0

好的。我发现我的问题是什么,但我不知道如何解决它。我正在使用一个简单的HttpModule(它执行重写路径)来清除服务名称末尾的.svc。因此,Application_AuthenticateRequest不会触发,显然HttpContext.Current.User也不会被设置。建议? – 2010-04-16 03:41:17

相关问题