Вызов asp.net asmx webservice через ajax возвращает 401 несанкционированную ошибку - PullRequest
4 голосов
/ 01 февраля 2012

Там есть asmx:

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

Там есть https : //.../a.aspx, на этой странице я вызываю webserivce через jQuery ajax:

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

Обратите внимание, что a.aspx использует HTTPS .Запрос Ajax получит 401 Несанкционированный ответ.Если a.aspx не использует HTTPS, он работает.

Я использую библиотеку с именем "WebPageSecurity", если я ее использую, произойдет ошибка 401.Если я не использую его, то есть, введите entery https: //.../a.aspx в браузере, тогда он будет работать.Итак, я думаю, проблема в WebPageSecurity, как я могу это исправить?Спасибо.

1 Ответ

2 голосов
/ 01 февраля 2012

В конце концов я нашел решение: игнорировать файл * .asmx в конфигурации WebPageSecurity в web.config:

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