从Web服务遇到未经授权的身份验证方案

Sai*_*Jin 5 sap wsdl web-services basic-authentication

我有一个来自我们客户公司的.WSDL文件,我需要用它来调用Web服务.他们的系统是SAP(SAP PI).我的应用程序是在VS 2008中开发的C#.NET 3.5客户端.我使用提供的.WSDL文件在Visual Studio中添加了一个服务引用.这为我创建了一个引用类来调用它们的服务,并在app.config文件中为我设置了几个绑定.

我没有更改app.config文件中的任何内容,但确实创建了调用其Web服务的代码.但是,当我调用他们的web服务时,我收到以下异常:

HTTP请求未经授权,客户端身份验证方案为"匿名".从服务器收到的身份验证标头是'Basic realm ="SAP NetWeaver Application Server ..."'.

(我略微修改了"基本领域"部分中使用的字符串,以便不给出它.)

app.config是否无法从WSDL正确构建?我应该以某种方式修改app.config文件吗?

我试过的事情:

  • 将app.config中的authenticationScheme从Anonymous更改为Basic
    (以及所有其他身份验证类型)
  • 更改app.config中的领域字符串以匹配异常消息中的领域
  • 在我的代码中的ClientCredentials.Username对象中设置username/pw字段

任何指针或帮助将不胜感激.

编辑:经过一些调查后,我发现Visual Studio有几个关于扩展元素策略和策略断言的警告:

  • 自定义工具警告:未处理命名空间"http://schemas.xmlsoap.org/ws/2004/09/policy"中的可选WSDL扩展元素"Policy".
  • 自定义工具警告:未导入以下策略声明:
    XPath:// wsdl:definitions [@ targetNamespace ='urn:sap-com:document:sap:rfc:functions']/wsdl:binding [@ name ='Binding_FieldValidation' ]断言:......

我无法确定这与我当前的身份验证方案问题是否相关.它似乎确实相关,但我还没有找到任何解决方案来解决这些政策警告.看起来WCF并没有很好地处理wsdl中的语句.

phi*_*ady 0

大多数 SAP 服务不支持匿名。因此,在调用时传递某种形式的身份验证数据。用户名和密码/X.509 票证...

如果您通过呼叫发送身份验证数据,请尝试此操作

要求 SAP 人员重新生成没有 SAP 断言、没有策略、SOAP 1.1 的 WSDL。您还可以尝试手动编辑 WSDL 以删除多余的废话...