我刚开始使用带有 ASP.NET AJAX 的 WCF 服务。我从 Javascript 实例化我的 WCF 服务,然后将字符串变量作为参数传递给我的 WCF 服务方法(使用 OperationContract 签名)。然后我返回一个绑定(bind)到我的自定义 Javascript 类的 .NET 对象(使用 DataContract 定义)。我无法根据登录到我的网络 session 的用户进行身份验证。但是,WCF Web 服务是完全不同的服务,没有 HttpContext.Current 对象的上下文。访问该对象的最安全方法是什么?
最佳答案
您可以访问HttpContext.Current
通过启用 AspNetCompatibility,最好通过配置:
<configuration>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
</configuration>
这反过来又允许您访问当前用户:
HttpContext.Current.User
- 这就是你所追求的,对吧?您甚至可以通过使用附加属性装饰您的服务类来强制执行 AspNetCompatibility:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
(在
System.ServiceModel.Activation
命名空间中。)如果该属性已到位,除非启用 AspNetCompatibility,否则您的服务将无法启动!
关于wcf - 从 WCF Web 服务访问 HttpContext.Current,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5904313/