我有一个Web服务,我使用相同的asmx扩展名转换为wcf服务。我有basicHttpbinding,因为我的服务与java,perl等各种客户端进行了对话。
我有一个验证,里面有HttpContext.Current。但我知道这在wcf服务中不起作用。我试图使用RequestContext或OperationContext但我无法这样做。我试着用
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
但没有帮助。我从soapUI调用我的服务进行测试。
答案 0 :(得分:1)
好的,所以我找到了解决方案。有很多方法可以获取HttpContext.Current上下文。我们可以使用OperationContext,也可以使用AspNetCompatibilityRequirements模式设置为Allowed,并在web.config中将aspNetCompatibilityEnabled设置为true。
对于我将asmx服务转换为wcf服务的情况,我还必须修改HttpHandler处理程序以删除并添加asmx路径到System.ServiceModel.Activation.HttpHandler。
答案 1 :(得分:1)
使用WCF服务时最好使用OperationContext。 因为你总是得到HttpContext.Current.Items总是Null只在ASP.NET运行时运行。 所以添加以下代码: -
OperationContext.Current.Extensions.Add(extension);