打开 Windows 身份验证时使用 ajax 调用 Web 服务?
Posted
技术标签:
【中文标题】打开 Windows 身份验证时使用 ajax 调用 Web 服务?【英文标题】:Using ajax to call a web service when Windows Authentication turned on? 【发布时间】: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 中工作? 你找到解决这个问题的方法了吗,我也遇到了同样的问题。谢谢。 【参考方案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 文件的模块部分。
希望对你有帮助
【讨论】:
以上是关于打开 Windows 身份验证时使用 ajax 调用 Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章
在 Internet Explorer 上使用 Windows 身份验证通过 SSL 进行跨域 ajax 调用失败