尝试使用 .Net Core 3.1 连接 mySAP WCF 时出现问题
Posted
技术标签:
【中文标题】尝试使用 .Net Core 3.1 连接 mySAP WCF 时出现问题【英文标题】:Getting Problem when try to connect mySAP WCF using .Net Core 3.1 【发布时间】:2020-08-29 19:34:59 【问题描述】:我正在尝试使用 WCF 客户端生成器 VS 2019 连接 MySAP SOAP 服务,但不幸的是我遇到了错误
System.Exception: 'HTTP 请求未经客户端授权 身份验证方案“匿名”。收到的认证头 从服务器是 'Basic realm="SAP NetWeaver Application Server [PXP/100]"'.'
这是我的示例代码,供您参考,我使用 .net core 3.1,我没有为此 WCF 客户端实现任何配置文件。
List<SAPReadTableService.dt_ReadTableMC_RequestFIELDS> listRequestFIELDSDetailT001W = new List<SAPReadTableService.dt_ReadTableMC_RequestFIELDS>();
#region fields
listRequestFIELDSDetailT001W.Add(new SAPReadTableService.dt_ReadTableMC_RequestFIELDS() FIELDNAME = "NAME1" );
requestDetailT001W.FIELDS = listRequestFIELDSDetailT001W.ToArray();
#endregion
try
SAPReadTableService.mi_osReadTableMCClient clientDetailShipmentT001W = new SAPReadTableService.mi_osReadTableMCClient();
#region credential
clientDetailShipmentT001W.ClientCredentials.UserName.UserName = "xxx";;
clientDetailShipmentT001W.ClientCredentials.UserName.Password = "xxx";
#endregion
SAPReadTableService.dt_ReadTableMC_Response responseDetailShipmentT001W = clientDetailShipmentT001W.mi_osReadTableMC(requestDetailT001W);
SAPReadTableService.dt_ReadTableMC_ResponseDATA[] dataDetailShipmentT001W = responseDetailShipmentT001W.DATA;
【问题讨论】:
【参考方案1】:您需要在 Reference.cs 中的 GetBindingForEndpoint 中添加一些安全配置 像这样的
result.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.TransportCredentialOnly;
result.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Basic;
希望这对大家有帮助.. 干杯谢谢
【讨论】:
以上是关于尝试使用 .Net Core 3.1 连接 mySAP WCF 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
Wcf 服务在 .NET Core 3.1 控制台应用程序中工作,但在 ASP.NET Core 3.1 Web API 中无法工作
尝试对 ASP.NET Core 3.1 使用多个身份验证方案时出现异常