用于连接到 ASP.NET Web 服务的 WCF 客户端

问题描述 投票:0回答:1

我有一个包含 ASMX Web 服务的项目和一个使用客户端代理连接到它的桌面客户端(使用来自 ASM Web 服务的 WSDL)。

使用 svc 实用程序升级代理以生成 WCF 服务(来自 ASMX 服务)。

请注意,客户端现在是 WCF,但服务器是 ASMX。

此 Microsoft 链接表示 WCF 客户端可以连接到 ASP.NET Web 服务。 https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/adopting-wcf?redirectedfrom=MSDN

上面的链接显示“WCF 客户端可以使用 ASP.NET Web 服务”。但是,当 WCF 客户端尝试访问 ASP.NET Web 服务(即 ASMX)时,客户端会出现以下错误。如何让“WCF 客户端可以使用 ASP.NET Web 服务”这个场景正常工作?

System.Web.Services.dll 中发生“System.Web.Services.Protocols.SoapHeaderException”类型的异常,但未在用户代码中处理

其他信息:Microsoft.Web.Services3.Security.SecurityFault:标头 http://schemas.xmlsoap.org/ws/2004/08/addressing:需要最终收件人的操作,但消息中不存在。

在 Microsoft.Web.Services3.Design.RequireSoapHeaderAssertion.RequireSoapHeaderFilter.ProcessMessage(SoapEnvelope 信封)

在 Microsoft.Web.Services3.Pipeline.ProcessInputMessage(SoapEnvelope 信封)

在 Microsoft.Web.Services3.WseProtocol.FilterRequest(SoapEnvelope requestEnvelope)

在 Microsoft.Web.Services3.WseProtocol.RouteRequest(SoapServerMessage 消息)

在 System.Web.Services.Protocols.SoapServerProtocol.Initialize()

在 System.Web.Services.Protocols.ServerProtocolFactory.Create(类型类型,HttpContext 上下文,HttpRequest 请求,HttpResponse 响应,布尔值和 abortProcessing)

wcf asmx
1个回答
0
投票

System.Web.Services.Protocols.SoapHeaderException 问题通常是由于 SOAP 标头的 MustUnderstand=true 造成的。

当您调用服务时,您可以这样设置代码:

MyWebService ws = new MyWebService();

    try {
        MyHeader customHeader = new MyHeader();
        customHeader.MustUnderstand = false;
        ws.myHeader = customHeader;
    
    }
    catch (Exception e) {
        Console.WriteLine ("Exception: {0}", e.ToString());
    }
© www.soinside.com 2019 - 2024. All rights reserved.