[英]WCF request doesn't flow via asp.net pipeline
我在asp.net应用程序中托管了WCF服务。
这是服务(缩短):
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceContract(Name = Name, Namespace = Namespace)]
[ServiceBehavior(Name = Name, Namespace = Namespace)]
public class WcfMaintenanceFacade {...}
这是托管:
RouteTable.Routes.Add(new ServiceRoute("entity/maintenance/5.20", new ServiceHostFactory(), typeof(WcfMaintenanceFacade)));
这是相关的配置部分:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
我的服务实例化,请求HttpContext.Current
,并且事件HttpContext.Current
不为空。
我无法解决两个(对我来说是主要的)问题:
HttpContext.Current.Session
为空 Application_BeginRequest
是的,从调用堆栈看来,请求正在通过WCF激活管道而不是ASP.net管道进行。 那我在做什么错?
HttpContext:从WCF服务中访问时,Current始终为null。 请改用T:System.ServiceModel.OperationContext.Current.RequestContext。
在此处阅读更多信息: https : //msdn.microsoft.com/en-us/library/aa702682.aspx
ASP.NET HTTP运行时处理ASP.NET请求,但不参与发往WCF服务的请求的处理.... WCF服务模型拦截发给WCF服务的消息并通过WCF传输/通道堆栈路由
因此,您的问题可能与此问题有关。 此信息也可在同一链接上获得。
希望它对您的问题有所帮助。
答案很简单(而且很明显):
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
是。 RAMMFAR。
对我来说,很明显,这两种技术不应该在同一应用程序中运行,这就是为什么它们具有两个不同的管道。 大自然服务是孤立的事情。 现在,您只需尝试找到一种解决方法,就可以基于它们都在同一IIS上运行的事实。
我建议您宁愿从目标,要实现的目标开始。 如果您需要将新的类似于服务的功能集成到本机ASP.NET应用程序中,则可以
1)使用ASMX服务(如果需要,将提供SAOP)和/或页面方法
2)如果需要JSON服务,请尝试集成WEB API。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.