wcf - 从 WCF Web 服务访问 HttpContext.Current

标签 wcf service httpcontext

我刚开始使用带有 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/

相关文章:

c# - Windows 服务选项

c# - Sitecore.Context.Item 是否使用 HttpContext?

c# - 在 HttpContext.Current.Request 中模拟 ServerVariables

WCF RIA 服务部署问题

WCF 句柄更新人员对象

c# - 停止/启动后 URI 的注册已经存在

Android:如何使用 BIND_AUTO_CREATE 选项停止由 bindService() 启动的服务?

android - Android 服务的良好做法

c# - MVC5 Ninject 绑定(bind)和 HttpContext

c# - WCF 能否处理对同一终结点的同时调用?