【问题标题】:Using ajax to call a web service when Windows Authentication turned on?打开 Windows 身份验证时使用 ajax 调用 Web 服务?
【发布时间】:2010-10-09 21:28:04
【问题描述】:

我正在尝试从 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)
    {

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

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

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

我注意到的另一件事是它在 Firefox 中都可以正常工作。我在 IE7 上看到了错误。

对可能的解决方案有什么想法吗?

【问题讨论】:

  • 当您启用对服务的匿名和身份验证访问时,它是否可以在 IE 中工作?
  • 你找到解决这个问题的方法了吗,我也遇到了同样的问题。谢谢。

标签: asp.net ajax web-services


【解决方案1】:

听起来您正在使用集成身份验证,并且 IE 已登录,但 Firefox 尚未登录。您可能需要检查登录 IE 的用户名。

还有一些类似的东西:

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

查看上下文包含的内容。

【讨论】:

    【解决方案2】:

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

    您可以尝试添加:

    preCondition="integratedMode"
    

    归属于您的 web.config 文件的模块部分。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 2016-06-10
      • 2016-08-20
      • 2012-02-28
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      相关资源
      最近更新 更多