通过ajax调用asp.net asmx webservice会返回401 Unauthorized错误

时间:2012-02-01 02:44:25

标签: jquery asp.net-ajax asmx http-status-code-401

有一个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中存在问题,我该如何解决?感谢。

1 个答案:

答案 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>