0

我有一个 Web 服务,我将它转换为具有相同 asmx 扩​​展名的 wcf 服务。我有 basicHttpbinding,因为我的服务与 java、perl 等各种客户端通信。

我有一个验证,其中包含 HttpContext.Current。但我知道这在 wcf 服务中不起作用。我正在尝试使用 RequestContext 或 OperationContext 但无法这样做。我试着用

[服务行为(InstanceContextMode=InstanceContextMode.PerSession)]

但没有帮助。我正在从soapUI 调用我的服务进行测试。

4

2 回答 2

1

好的,所以我找到了解决方案。有很多方法可以获取 HttpContext.Current 上下文。我们可以使用 OperationContext,也可以使用在 web.config 中将 AspNetCompatibilityRequirements 模式设置为 Allowed 并将 aspNetCompatibilityEnabled 设置为 true。

对于我已将 asmx 服务转换为 wcf 服务的情况,我还必须修改 HttpHandler 处理程序以删除并将 asmx 路径添加到 System.ServiceModel.Activation.HttpHandler。

于 2010-08-07T05:41:48.440 回答
1

您最好在使用 WCF 服务时使用 OperationContext。因为您将始终得到 HttpContext.Current.Items 始终为 Null,它仅在 ASP.NET 时运行。所以添加以下代码:-

OperationContext.Current.Extensions.Add(extension);
于 2011-04-21T05:17:56.387 回答