有一个asmx:
[WebService]
[ScriptService]
public class MyService : WebService {
[WebMethod]
public OperationResult Validate(string str) { }
}
有一个 https ://.../a.aspx,在这个页面中,我通过jQuery ajax调用webserivce:
$.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 Unauthorized响应。 如果a.aspx没有使用HTTPS,则可以正常工作。
我正在使用名为“WebPageSecurity”的库,如果我使用它,则会发生401错误。如果我不使用它,即在浏览器中直接输入https://.../a.aspx,那么它将起作用。 所以我想在WebPageSecurity中存在问题,我该如何解决?感谢。
答案 0 :(得分:2)
最终,我找到了解决方案:在web.config中的WebPageSecurity配置中忽略* .asmx文件:
<secureWebPages mode="On" ignoreHandlers="WithStandardExtensions" encryptedUri="xxx">
<files>
<add path="path/to/MyService.asmx/MyMethod" secure="Ignore" />
</files>
</secureWebPages>