打开Windows身份验证时使用ajax调用Web服务?

5 asp.net ajax web-services

我试图从javascript调用一个Web服务方法:

function Search() {

        var context = new Object;
        context.Filter = "Test";

        SearchService.GetSearch(context, onSuccess, onFailed);
    }

    function onSuccess(result) {
        // userContext contains symbol passed into method
        var res = document.getElementById("resultsDiv");
        res.innerHTML = result;
    }

    function onFailed(result) {
        var res = document.getElementById("resultsDiv");
        res.innerHTML = result.get_message();
    }
Run Code Online (Sandbox Code Playgroud)

这是Web服务签名:

[WebMethod]
    public SearchComboBoxItemData[] GetSearch(object context)
    {
Run Code Online (Sandbox Code Playgroud)

当我使用表单身份验证并允许匿名访问Web服务时,一切正常.

但是,当我对应用程序使用Windows身份验证,但只允许匿名访问Web服务时,从javascript调用Web服务会引发以下错误:

无效的Web服务调用,缺少参数值:'context'.

我注意到的另一件事是它在Firefox中的两种方式都很好.我在IE7上看到错误.

对可能解决方案的任何想法?

w4y*_*ymo 0

我假设您正在使用 ASP.NET Ajax。

您可以尝试添加:

preCondition="integratedMode"
Run Code Online (Sandbox Code Playgroud)

属性添加到 web.config 文件的 Modules 部分。

希望这可以帮助