我为我的客户开发网络和移动应用程序。在我当前的架构中,许多资源在 Web 访问和移动访问之间共享。页面可以aspx
在 Web 上显示并被调用到移动应用程序中的 Web 视图。我的问题是:
WebOperationContext.Current
和HttpContext.Current
对象有什么区别?
据我了解,它是同一个对象,但我注意到 WebOperationContext.Current 在某些情况下为空,我不明白为什么。
WebOperationContext
通常在 WCF REST 方法中使用,以便该方法可以访问传入请求和传出响应。
HttpContext
当可以访问传入请求和传出响应时,通常在 ASP.NET WebForms 页面或 ASMX Web 服务的 Web 方法中使用。
它们专为不同的项目类型(WCF REST/ASP.NET WebForms)而设计,因此您不应在错误的项目类型中使用它们。
关于什么时候的值.Current
是null
,那就更复杂了。即使您在正确的项目类型中调用此属性,您也需要确保调用是在正确的线程上进行的。只有在处理请求的线程(也发送响应)上,您才能访问当前上下文。在任何其他线程(后台线程或您创建的新线程)上,您会得到null
. 这已为人所知多年,但初学者有时仍然会出错。