Bonjour tout le monde
J'ai un site web intranet qui est composé d'une page principale.
J'ai également un sous dossier \WebServices qui contient un web service.
Dans ma page, j'appelle ce web service avec ASP.NET AJAX de la façon suivante:
Code ASP.NET :
<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug">
<Services>
<asp:ServiceReference Path="~/WebServices/WsBlotter.asmx" />
</Services>
</asp:ScriptManager>
function PublishHeartbeat() {
BlotterLightCNCE.WsBlotter.PublishHeartbeat($get('login').value, OnCompletePublishHeartbeat, OnErrorPublishHeartbeat);
}
function OnCompletePublishHeartbeat(args) {
// todo
}
function OnErrorPublishHeartbeat(args) {
// todo
}
Tout mon site est paramétré en authentification windows et cela fonctionne la plupart du temps.
En effet, il arrive que mon appli freeze, voire plante.
En parcourant les logs IIS, j'ai remarqué que parfois, il s'écoulait 10 secondes entre la requête 401 et la réponse du navigateur avec les credentials. Et parfois, il n'y a même pas de réponse du navigateur.
Etant donné que mon web service n'a pas besoin d'authentification, j'ai décidé de paramétré le dossier WebServices en accès anonyme.
Et là, mes appels ajax à mon web service ne fonctionnent plus. Du moins, les appels aux web méthodes qui prennent un ou plusieurs paramètres en entrée (pas de problème avec les web méthodes qui ne prennent pas de paramètres).
L'erreur obtenue est :
Invalid web service call, missing value for parameter: user
Ptite précision: cela fonctionne bien quand j'ouvre mon web service dans IE
J'ai décidé de lancer Web Development Helper pour voir ce qu'il se passait: je regarde le contenu de ma request et je vois bien dans le Request Body: {"user":"toto"} (j'ai ce même contenu quand tout fonctionne bien en mode authentification windows). Donc là, je comprends pas trop.
Ensuite, si j'essaye avec Fiddler2, tout fonctionne. Je coupe Fiddler, ça ne fonctionne plus. C'est comme si Fiddler modifiait qqchose mais je ne sais pas quoi.
En résumé:
- pourquoi mon navigateur prend parfois du temps à renvoyer les credentials suite à une réponse 401 (voire ne les renvoie jamais)?
- pourquoi mes paramètres ne sont pas transmis lors de mes appels ajax quand le web service est en accès anonyme?
- que fait Fiddler?
Env: Windows Server 2003, IIS 6.0, fx 3.5 SP1
Si qqu'un a des idées, je suis preneur :)
Merci à tous