`
Virgo_S
  • 浏览: 1153598 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

WCF Service中HttpContext.Current为null的解决办法

    博客分类:
  • .NET
阅读更多
http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcB8%2BJwychFYWb7c0dSg%3D&p=mm_11626924_0_0
做了一个测试, 新建一个WebApplication项目, 分别添加 aspx page, asmx web service, WCF service(.svc), 针对每个请求的HttpContext.Current做观察, 结果如下:

  Item                HttpContext.Current                        HttpContext.Current.Session

aspx Page:                       Y                                                       Y

asmx web service              Y                                                           N

WCF service                      N                                                           N



针对上述结论, 在http://www.cnblogs.com/artech/archive/2009/06/24/1510497.html文章中[二、ASP.NET并行(Side by Side)模式]部分有提到, 在WCF寄宿在IIS的环境中, 当aspnet_isapi接收到client 的request之后,会被WCF 的处理程序直接截获,并不会执行aspx页面默认的执行管道, 因此在WCF hosting IIS的环境中是得到的HttpContext.Current永远是null的.



那我们有没有办法使在WCF hosting IIS的环境中使HttpContext.Current不为NULL, 能为我们所用呢?

经过测试发现只要注意下面亮点就可以了:

1. 在hosting WCF的web.config中加入:

<system.serviceModel>

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

</system.serviceModel>



2. 在每个Service的定义(注意不是Contract, 不过就算加在Contract上编译是也会报错)上加上下面Attribute:

[AspNetCompatibilityrequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]



再测试看看, 发现WCF hosting IIS的程序中也可以使用HttpContext.Current了.



PS:

NHibernate WCF中Session的问题其实也就可以解决了
分享到:
评论

相关推荐

    Artech.WCFService.2007.03.02.zip

    Artech.WCFService.2007.03.02.zip这个压缩包文件是一个包含Artech公司的WCF服务示例的资源集合。...通过深入研究和实践这个示例,开发者可以快速提升自己的技能,为实际项目中的WCF服务开发打下坚实基础。

    WCF.Multi-Layer.Services.Development.with.Entity.Framework.4th.Edition

    You will start off by creating, implementing, and hosting a basic HelloWorld WCF Service followed by deploying the service and publishing it to IIS. Next, you will learn how to create and test a ...

    WCF全面解析 上册.pdf

    WCF全面解析 上册.pdf WCF全面解析 上册.pdf WCF全面解析 上册.pdf

    WCFService.zip_WCF.Service_wcf

    在“WCFService.zip_WCF.Service_wcf”这个压缩包中,我们主要关注的是“uploadimage service”,这是一个基于WCF技术实现的跨平台图像上传服务。WCF服务的跨平台性得益于其支持多种传输协议(如HTTP、TCP、命名管道...

    WCF.Service.rar_ServiceReference1_WCF.Service_c# wcf service_wc

    在本压缩包中,`WCF.Service.rar`包含了一个名为`ServiceReference1`的客户端引用,以及`WCF.Service`的源代码,这表明我们正处理一个基于C#实现的WCF服务实例。 **服务参考(ServiceReference1)**: 在C#开发中,...

    WcfService.rar

    关于WCF学习的简单应用,已知的我们的WCF程序宿主是发布到IIS上面的。不过这样不便于我们进行“开始”或“停止”WCF服务的操作。所以尝试了编写以窗体应用程序和控制台程序作为WCF服务宿主的方式。代码中主要提供了...

    WCF 例子 artech.wcfservice

    标题“WCF 例子 artech.wcfservice”表明这是一个关于Windows Communication Foundation(WCF)的服务示例,其中“artech.wcfservice”可能是服务的名称或者是项目或解决方案的标识符。描述“artech.wcfservice WCF ...

    [WCF服务编程].(Programming.WCF.Services).Juval.Lowy.文字版.pdf.7z

    8. **服务托管**:WCF服务可以托管在各种环境中,如IIS(Internet Information Services)、Windows服务、自承载等,这为服务部署提供了极大的灵活性。 9. **持久化与状态管理**:对于需要持久化数据或管理会话状态...

    WCF Service Client

    **WCF Service Client详解** Windows Communication Foundation ...在实际项目中,WCF服务可能涉及更复杂的配置、安全设置、事务处理、错误处理等方面,但这个基础示例为学习WCF Service Client提供了一个良好的起点。

    WCF全面解析 下册.pdf

    WCF全面解析 下册.pdf

    wcf视频教程2.part1

    wcf视频教程2.part1

    wcfservice示例

    在这个示例中,我们将会探讨WCF服务的基本概念、结构以及如何通过`WcfService1`这个文件来理解和学习WCF服务。 1. **WCF服务基础** WCF是微软提供的一个全面的面向服务的架构,它整合了.NET框架中先前的Web服务...

    《WCF揭密》.part1.rar

    《WCF揭密》分两个压缩包 《WCF揭密》.part1.rar 《WCF揭密》.part2.rar 请分别下载。

    WCFService可以通过web调用和WCF服务访问

    在标题和描述中提到的“WCFService可以通过web调用和WCF服务访问”,这意味着该服务已经配置为允许两种不同的调用方式。 1. **Web调用**:WCF服务可以通过HTTP协议暴露为Web服务,允许任何支持SOAP协议的客户端进行...

    《WCF揭密》.part2

    《WCF揭密》分两个压缩包 《WCF揭密》.part1.rar 《WCF揭密》.part2.rar 请分别下载。

    wcf视频教程1.part1

    wcf视频教程1.part1 讲得很不错,分享给大家。

    WCF服务器客户端通信.zip

    本示例中的"**WCF服务器客户端通信.zip**"文件包含了实现WCF通信的基础示例,包括客户端(WCFClient)和服务器(WCFService)两部分。以下将详细介绍这两个组件以及如何实现它们之间的通信。 **WCF基础概念:** 1. ...

    Wcf控制台宿主 跨域.zip

    1. **服务配置**:在WCF服务的配置文件(通常是ServiceName.exe.config)中,我们需要配置服务行为和服务终结点,以便支持跨域请求。这通常涉及到添加`&lt;serviceMetadata&gt;`元素来启用元数据发布,以及`...

Global site tag (gtag.js) - Google Analytics