我想從使用jQuery的wcf web服務獲取數據。 我的jQuery代碼如下:構建wsdl的soap請求和jQuery的服務契約
jQuery.ajax({
type: "POST",
url: serviceWebPath,
data: data,
contentType: "text/xml; charset=utf-8",
dataType: "json",
success: function (data) { alert (data); },
error: _errorHandler
});
我有一個服務合同:
[OperationContract]
String GetContainerByName(String _label);
[OperationContract]
String GetContainerByToken(Guid _Token);
[OperationContract]
void SetContainer(Guid securityToken, String _Content);
我有,我可以在HTTP訪問XSD文件://.svc/mex和包括
<wsdl:operation name="GetContainerByToken">
<soap:operation soapAction="http://tempuri.org/IProxyShareContextContract/GetContainerByToken" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
我傳遞給jQuery的數據是:
var data = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetContainerByToken><label>' + clientTokenSecuritySManager + '</label></GetContainerByToken></soap:Body></soap:Envelope>';
我需要訪問GetContainerByToken方法。但我繼續得到這個錯誤:
"The message with Action '' cannot be processed at the receiver,
due to a ContractFilter mismatch at the EndpointDispatcher. This
may be because of either a contract mismatch (mismatched Actions
between sender and receiver) or a binding/security mismatch between
the sender and the receiver. Check that sender and receiver have
the same contract and the same binding (including security requirements,
e.g. Message, Transport, None)."
好吧,我在頭文件中添加了「SOAPAction:GetContainerByToken」,現在錯誤消息是完全一樣的,除了引號現在說'GetContainerByToken'。儘管前進了一步。謝謝! – 2011-05-05 10:57:43
好吧,事實證明,正確的標題不只是GetContainerByToken,但http://tempuri.org/IProxyShareContextContract/GetContainerByToken我現在可以得到一個迴應!很酷,謝謝! – 2011-05-05 12:58:50
soapUI提示很棒,順便說一句! – 2011-05-13 14:04:34