我有一个来自我们客户公司的 .WSDL 文件,我需要使用它来调用 Web 服务。他们的系统是 SAP (SAP PI)。我的应用程序是在 VS 2008 中开发的 C# .NET 3.5 客户端。我使用他们提供的 .WSDL 文件在 Visual Studio 中添加了服务参考。这为我创建了一个引用类来调用他们的服务,并为我在 app.config 文件中设置了几个绑定。
我没有更改 app.config 文件中的任何内容,但确实创建了代码来调用他们的 Web 服务。但是,当我调用他们的网络服务时,我收到以下异常:
HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“Basic realm="SAP NetWeaver Application Server ..."”。
(我稍微修改了“基本领域”部分中使用的字符串,以免泄露。)
app.config 没有从 WSDL 正确构建吗?我应该以某种方式修改 app.config 文件吗?
我尝试过的事情:
- 将 app.config 中的 authenticationScheme 从 Anonymous 更改为 Basic
(以及所有其他身份验证类型) - 更改 app.config 中的领域字符串以匹配异常消息中的领域
- 在我的代码中的 ClientCredentials.Username 对象中设置用户名/密码字段
任何指示或帮助将不胜感激。
编辑:经过更多调查,我发现 Visual Studio 有几个关于扩展元素 Policy 和 Policy 断言的警告:
- 自定义工具警告:未处理命名空间“http://schemas.xmlsoap.org/ws/2004/09/policy”中的可选 WSDL 扩展元素“策略”。
- 自定义工具警告:未导入以下策略断言:
XPath://wsdl:definitions[@targetNamespace='urn:sap-com:document:sap:rfc:functions']/wsdl:binding[@name='Binding_FieldValidation' ] 断言:...
我无法确定这是否与我当前的身份验证方案问题有关。它似乎确实是相关的,但我也找不到任何解决方案来解决这些政策警告。似乎 WCF 不能很好地处理 wsdl 中的语句。