2012-12-13 67 views
2

我有一個沒有收到請求參數的WCF方法。但是,如果我使用WCFTest客戶端(Visual Studio附帶的客戶端),該方法將接收參數。WCF方法沒有收到參數

如果我捕捉到的請求,他們看起來很相似:

如果請求是這樣的,它的工作原理:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <consultaValeCompra xmlns="http://tempuri.org/"> 
      <dataMovto>1</dataMovto> 
      <numSeqOperacao>2</numSeqOperacao> 
      <numDocumento>3</numDocumento> 
      <valorDocumento>4</valorDocumento> 
      <tipo>5</tipo> 
      <codPreVenda>6</codPreVenda> 
     </consultaValeCompra> 
    </s:Body> 
</s:Envelope> 

如果請求是這樣的,我沒有得到的參數:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Body> 
     <consultaValeCompra xmlns="http://valeCompra/jaws"> 
      <dataMovto>121212</dataMovto> 
      <numSeqOperacao>003719</numSeqOperacao> 
      <numDocumento>000000000000005555466465454546</numDocumento> 
      <valorDocumento>000046400</valorDocumento> 
      <tipo>0</tipo> 
      <codPreVenda>0000000000</codPreVenda> 
     </consultaValeCompra> 
    </soapenv:Body> 
</soapenv:Envelope> 

的方法簽名是:

public Retorno consultaValeCompra(string dataMovto, string numSeqOperacao, string numDocumento, string valorDocumento, string tipo, string codPreVenda) 

我可以當場差異,但我不明白爲什麼第一部作品和第二個沒有。

我能做些什麼來使它工作?

謝謝。

+0

哪個代碼導致錯誤的要求?生成的propxy? javascript(jquery?) – Arthur

+1

我看到的唯一可能相關的區別是'consultaValeCompra'標籤上定義的命名空間。 –

+1

我認爲''consultaValeCompra>'上的XML命名空間是罪魁禍首;在這個例子中,它是'http:// tempuri.org /' - 在這個例子中,它不起作用,它是'http:// valeCompra/jaws'。您的服務方式的服務和/或運營合同是什麼? –

回答

3

似乎爲<consultaValeCompra> XML命名空間(xmlns=屬性)是不同的:

<consultaValeCompra xmlns="http://tempuri.org/"> 

<consultaValeCompra xmlns="http://valeCompra/jaws"> 

編輯:更正答案:
您應該檢查ServiceContract屬性上你的服務班。將其設置爲服務器和客戶端上的相同名稱空間。例如:

[ServiceContract(Namespace = "http://valeCompra/jaws")] 
public class MyService 
{ 
    [...] 
} 

或再生您的服務客戶端。