我是新手,在创建一个调用Web服务的应用程序时偶然发现了一堵墙。我已经添加了wsdl作为服务引用,没有任何问题。我试图调用的方法需要通过用户密钥和登录进行身份验证,但我需要在表单中传递的唯一内容是登录(没有auth它会给我失败的登录错误)。我使用ClientCredentials传递用户名,但之后我收到了:
[CommunicationException: Server returned an invalid SOAP Fault. Please see InnerException for more details.]
内在异常:
[XmlException: Required xml:lang attribute value is missing.]
我检查了日志,响应给了我一个奇怪的消息(大部分代码都是通过文档中的示例提供的):
Call to undefined method X::Action()
老实说,我不知道如何处理这个问题。令人怀疑的是文档是错误的,所以它应该在我的最后,但无法弄清楚在哪里。此外,这个应用程序应该是一个能够在每个站点上部署的小部件,因此它应该尽可能简单。 你能指出我如何处理这个错误的正确方向吗? 我的web.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<system.web>
<compilation debug="true" targetFramework="4.5.2"/>
<httpRuntime targetFramework="4.5.2"/>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
<bindings>
<wsHttpBinding>
<binding name="ApiClientsBinding">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://X/edi/api-clients.php"
binding="wsHttpBinding" bindingConfiguration="ApiClientsBinding"
contract="ServiceClient.ApiClientsPortType" name="ApiClientsPort" />
</client>
</system.serviceModel>
</configuration>
更新: 我突发奇想地检查了一些东西,它似乎是一个SOAP版本的问题。将wsHttpBinding更改为basicBinding之后,xml:lang错误消失了但是让我这样:
<SOAP-ENV:Fault>
<faultcode xmlns="">SOAP-ENV:Server</faultcode>
<faultstring xmlns="">Call to undefined method X::ActivityId()</faultstring>
</SOAP-ENV:Fault>
有什么想法吗?
谢谢。
答案 0 :(得分:0)
仍然不知道导致该错误的原因,但网络服务工作正常。我通过在VS中启动一个新项目来解决它。相同的代码,相同的文件但出现错误并且应用运行良好。