我尝试通过从C#生成SOAP消息来访问Navision 2009 R2 Web服务。只有当我调用的codeunit函数没有参数时,我才会得到响应。通过网络服务访问Navision codeunit(xml)
举例codeunit RunJob功能测试(没有参数,返回一个硬编码字符串):
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Test xmlns="urn:microsoft-dynamics-schemas/codeunit/runjob">
</Test>
</soap:Body>
</soap:Envelope>
至于结果我得到的字符串...
举例相同codeunit RunJob函数RunJob(以1个字符串参数命名为参数,返回内部服务器错误):
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<RunJob xmlns="urn:microsoft-dynamics-schemas/codeunit/runjob">
<parameter>aaaa</parameter>
</RunJob>
</soap:Body>
</soap:Envelope>
作为结果出现错误(WebResponse的WR = request.GetResponse();)而不是所需的信息。
最有趣的是它的工作原理。唯一的变化(就我而言) - 2013年安装了NAV。
有没有人遇到同样的问题或知道解决方案?
P.S. 下面是RunJob功能的Web服务定义的一部分:
<element name="Runjob">
<complexType>
<sequence>
<element minOccurs="1" maxOccurs="1" name="parameter" type="string"/>
</sequence>
</complexType>
</element>
<element name="Runjob_Result">
<complexType>
<sequence>
<element minOccurs="1" maxOccurs="1" name="return_value" type="string"/>
</sequence>
</complexType>
</element>
我把整个请求写在一行中。上例中的车厢只是为了便于阅读。 – user1390456
在大多数情况下,http 500意味着请求出现问题。尝试使用任何耗用ws的工具(如SOAPui)来生成示例请求。每晚构建的soapui可以与导航和NTLM身份验证一起使用。 –
是的,我确实使用SOAPui,我的问题中的XML片断是从那里获取的(我使用SOAPui获取/请求的请求/答案都等于从C#发出的请求/答案)。 早些时候(〜2个月前),SOAPui可以成功处理函数参数的传输并从WS中获得正确答案。我无法想象出了什么问题:C#代码和其他任何内容都没有改变,我只是把这个项目放在一边,当我回到它的时候,带参数的函数停止工作。唯一发生的事情 - 在“暂停”期间将NAV 2013与NAV 2009 R2并行安装 – user1390456