【发布时间】:2021-11-27 01:07:19
【问题描述】:
我们正在进行一个项目,我们需要访问 SOAP 1.2 服务并使用 DLL 转换为 JSON。我们已经构建了所有内容,但被 .NET 4.5 中的身份验证问题所困扰,而这些问题在 .NET 5 中不会发生。我们认为这是一个简单的配置问题,但可能已经让 myoptic 试图让它工作。好奇是否有人遇到过类似的问题并有任何见解......
背景:
- 使用 IIS Web 服务器上的 Windows 身份验证 (NTLM) 保护 SOAP 安全,无需基于角色的身份验证。
- SOAP 服务基于 SOAP 1.2
- SOAP 服务使用者客户端必须在 DLL(不是 EXE)内工作,才能与 Web 应用程序集成;由于客户端代码位于 DLL 中,因此无法更改父应用程序的配置;在 .NET 4.5 Framework 中工作(我们有在 .NET 5 中工作的代码);而且,我们无法触及托管 SOAP 1.2 服务的服务器。
- 正在使用 WCF 在 DLL 中创建 SOAP 绑定
- 使用 WSHttpBinding 类是因为 SOAP 1.2 协议
- 当前在 DLL 中配置的绑定
我们的问题:
- 我们在调用绑定函数时收到“HTTP 请求未经授权,使用客户端身份验证方案‘匿名’。从服务器收到的身份验证标头是‘NTLM,Negotiate’”异常
- 示例代码:
WSHttpBinding binding = new WSHttpBinding();
binding.Security.Mode = SecurityMode.None;
EndpointAddress endpointAddress = new EndpointAddress("http://...SummaryService.svc");
ServiceClient client = new ServiceClient(binding, endpointAddress);
var result = await client.SomeFunctionAsync();
注意:从 .NET 5.0 应用程序运行此代码时,没有问题;我只在 .NET 4.5 .DLL/.EXE 中看到此错误。
有什么建议吗? TIA
【问题讨论】: