我嘗試通過從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