Bon, j'essaie (mal) de passer un appel JSONP de jQuery sur une page de test à un service Web WCF fonctionnant localement, comme un appel inter-domaine. J'ai, à un moment ou un autre, soit obtenu une erreur de 1012 URI refusée, ai obtenu une réponse mais en Xml, ou n'ai eu aucune réponse du tout. Actuellement, la façon dont je l'ai configuré il crache un 1012.Impossible de terminer un appel JSONP de jQuery à WCF
Je n'ai pas écrit ce service web, donc il est tout à fait possible que je manque juste un paramètre de configuration quelque part, mais je suis devenu si frustré avec cela que je pense juste en demandant ici sera plus productif. Merci les gars. Détails ci-dessous.
J'ai un service Web WCF avec la méthode suivante:
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public decimal GetOrderStatusJson(int jobId)
Je suis en train d'appeler cette méthode à partir d'une page de test jQuery, via un appel JSONP inter-domaines.
<script type="text/javascript">
getJsonAjaxObject(
"http://localhost:3960/ProcessRequests.svc/json/GetOrderStatusJson",
{ "jobId": 232 });
function getJsonAjaxObject(webServiceUrl, jsonData) {
var request = {
type: "POST",
contentType: "application/json; charset=utf-8",
url: webServiceUrl,
data: jsonData,
dataType: "jsonp",
success: function(msg) {
//success!
alert("blah");
},
error: function() {
//oh nos
alert("bad blah");
}
};
$.ajax(request);
}
</script>
Voici les morceaux du web.config configurer à cet effet:
<services>
<service behaviorConfiguration="MWProcessRequestWCF.ProcessRequestsBehavior"
name="MWProcessRequestWCF.ProcessRequests">
<endpoint address="json" behaviorConfiguration="AspNetAjaxBehavior"
binding="webHttpBinding" contract="MWProcessRequestWCF.IProcessRequests" />
<endpoint address="" binding="wsHttpBinding" contract="MWProcessRequestWCF.IProcessRequests">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MWProcessRequestWCF.ProcessRequestsBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="AspNetAjaxBehavior">
<enableWebScript/>
</behavior>
</endpointBehaviors>
</behaviors>