我正在使用HTML和JavaScript(jQuery(开发一个Web应用程序,对于数据库通信,我正在使用C#中的.asmx Web服务。
在本地计算机和本地 IIS 上部署我的应用工作正常。问题是现在我需要在公司的 Web 服务器上部署我的应用程序,现在是每个 ajax 调用都不起作用并返回错误 401的时候。奇怪的是,如果我输入 ajax 调用 url(显示 asmx Web 服务(,然后返回我的网站并重新加载页面,现在所有 ajax 调用都可以工作。例如:
$.ajax({
url: "http://192.168.46.87/MyApp/ws_WebService.asmx/Login"
此 ajax 调用返回错误 401,之后,如果我输入 urlhttp://192.168.46.87/MyApp/ws_WebService.asmx加载我的 Web 服务,并且如果我现在重新加载网页的选项卡,ajax 调用工作正常。
这是我的 ajax 调用:
function CallWM(webMethod, JSONToSend, callBackFunction, extraData) {
try {
$.ajax({
type: 'POST',
url: "http://192.168.46.87/MyApp/" + webMethod,
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify(JSONToSend),
success: function (data, strErr, xhr) {
callBackFunction(data.d, extraData);
},
error: function (xhr, textStatus, errorThrown) {
bootbox.alert("Error calling the server!n" + xhr.statusText);
console.log(xhr.statusText);
console.log(xhr);
$.unblockUI();
}
});
}
catch (err) {
bootbox.alert("Error calling the server!n" + err.message);
$.unblockUI();
}
}
我已经尝试在服务器IIS上更改身份验证类型,使用ajax调用发送凭据,但是我收到相同的错误消息,我可以尝试什么其他方法或可能是什么问题?
PD.在我的本地 IIS 上运行良好,问题是现在我正在将我的应用程序移动到 Web 服务器。
最后我可以解决这个问题,这是我的解决方案。
在我的应用程序路径上,我有一个 Web.config,其中没有任何与身份验证相关的内容,但我发现在 IIS inetpub 应用程序文件夹根目录上还有另一个 Web.config,在该文件上,我看到有一些关于身份验证的内容,删除它解决了我的问题。