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

时间:2009-02-25 18:49:33

标签: 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();
    }

以下是网络服务签名:

[WebMethod]
    public SearchComboBoxItemData[] GetSearch(object context)
    {

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

我假设你使用的是ASP.NET Ajax。

您可以尝试添加:

preCondition="integratedMode"

属性为web.config文件的Modules部分。

希望这有帮助

答案 1 :(得分:0)

听起来你正在使用集成身份验证,IE已经登录,但Firefox却没有。您可能想要检查IE登录的用户名。

此外,还有以下几点:

var temp = "";
for(prop in context){
    temp +=prop+"= "+context[prop]+"\n";
}
alert(temp);

查看上下文包含的内容。