/ / L'appel du service Web asmx asp.net via ajax renvoie 401 Erreur non autorisée - jquery, asp.net-ajax, asmx, http-status-code-401

L'appel de asp.net asmx webservice via ajax renvoie 401 Erreur non autorisée - jquery, asp.net-ajax, asmx, http-status-code-401

Il y a un asmx:

[WebService]
[ScriptService]
public class MyService : WebService {
[WebMethod]
public OperationResult Validate(string str) { }
}

Il y a un https: //.../a.aspx, dans cette page, j'appelle le webserivce via jQuery ajax:

$.ajax({
url: "/Services/MyService.asmx/Validate",
type: "POST",
contentType: "application/json; charset=utf-8",
data: data,
success: function (data, textStatus, xhr) {
// xxx
}
});

Notez que a.aspx utilise HTTPS. La requête ajax obtiendra une réponse non autorisée 401. Si a.aspx n'utilise pas HTTPS, cela fonctionne.

J'utilise une bibliothèque nommée "WebPageSecurity", si je l'utilise, l'erreur 401 se produira. Si je ne l'utilise pas, c'est-à-dire une entrée directe https://.../a.aspx dans le navigateur, alors cela fonctionnera. Donc je suppose que le problème dans WebPageSecurity, comment puis-je le résoudre? Merci.

Réponses:

2 pour la réponse № 1

Finalement, j'ai trouvé la solution: ignorer le fichier * .asmx dans la configuration WebPageSecurity dans web.config:

  <secureWebPages mode="On" ignoreHandlers="WithStandardExtensions" encryptedUri="xxx">
<files>
<add path="path/to/MyService.asmx/MyMethod" secure="Ignore" />
</files>
</secureWebPages>