Вызов asp.net asmx webservice через ajax возвращает 401 Несанкционированная ошибка

99
12

Там есть 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. Если я не использую его, то есть прямое вхождение https://.../a.aspx в браузере, тогда он будет работать.
Поэтому я думаю, что проблема в WebPageSecurity, как я могу ее исправить? Спасибо.

спросил(а) 2021-01-25T16:01:45+03:00 4 месяца, 4 недели назад
1
Решение
77

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

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

ответил(а) 2021-01-25T16:01:45+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема