大家好,又见面了,我是你们的朋友全栈君。
ajax webservice asmx 401未经授权的错误(ajax webservice asmx 401 unauthorized error)
我有一个内部网站,需要登录才能让人们在会议期间记录笔记和其他信息。 我试图通过AJAX调用将数据发布到同一服务器上的Web服务,在同一文件夹中。 我收到401未经授权的错误。
使用Javascript:
function saveNotes()
{
var json = “{ ID: 5, Note: ‘Test Note’}”;
$.ajax({
type: “POST”,
url: “AutoSaveService.asmx/AutoSave”,
data: json,
xhrFields: { withCredentials: true },
contentType: “application/json; charset=utf-8”,
dataType: “json”,
success: function (r) {
var data = JSON.parse(r.d);
console.log(data.M + “:” + data.N)
},
error: function (r) { console.log(r.responseText); },
failure: function (r) { console.log(r.responseText); }
});
}
WebService asmx文件:
[System.Web.Services.WebService(Namespace = “http://tempuri.org/”)]
[System.Web.Services.WebServiceBinding(ConformsTo = System.Web.Services.WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class AutoSaveService : System.Web.Services.WebService
{
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public static string AutoSave(int ID, string Note)
{
var data = new { M = ID, N = Note };
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
return js.Serialize(data);
}
}
我正在使用表单身份验证(身份验证与AD):
我以前从未在安全环境中进行过Ajax调用,请告诉我您需要的其他信息。
我研究过类似问题的其他解决方案,但无法让他们工作。
I have an internal website that requires a login where people can record notes and other information during meetings. I am trying to post the data with an AJAX call to a webservice on the same server, in the same folder. I am getting an 401 unauthorized error.
Javascript:
function saveNotes()
{
var json = “{ ID: 5, Note: ‘Test Note’}”;
$.ajax({
type: “POST”,
url: “AutoSaveService.asmx/AutoSave”,
data: json,
xhrFields: { withCredentials: true },
contentType: “application/json; charset=utf-8”,
dataType: “json”,
success: function (r) {
var data = JSON.parse(r.d);
console.log(data.M + “:” + data.N)
},
error: function (r) { console.log(r.responseText); },
failure: function (r) { console.log(r.responseText); }
});
}
WebService asmx file:
[System.Web.Services.WebService(Namespace = “http://tempuri.org/”)]
[System.Web.Services.WebServiceBinding(ConformsTo = System.Web.Services.WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class AutoSaveService : System.Web.Services.WebService
{
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public static string AutoSave(int ID, string Note)
{
var data = new { M = ID, N = Note };
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
return js.Serialize(data);
}
}
I am using forms authentication (authenticating vs AD):
I have never done ajax calls within a secure environment before, let me know what other information you need.
I’ve looked at other solutions to similar problems but can’t get them to work.
原文:https://stackoverflow.com/questions/40142054
更新时间:2020-05-28 16:05
最满意答案
我想到了。
public static string AutoSave(int ID, string Note)
应该:
public string AutoSave(int ID, string Note)
I figured it out.
public static string AutoSave(int ID, string Note)
should be:
public string AutoSave(int ID, string Note)
相关问答
1)当我尝试测试你的web服务时,它告诉我: “测试表单只适用于来自本地机器的请求” 警告:完成测试后,请勿将此web.config保存为这样 将其添加到web.config中,以便您可以测试localhost之外的webservice:
您可以尝试使用以下链接中描述的方法。 http://www.mindfiresolutions.com/ColdfusionMaking-a-call-to-a-Web-Service-with-complex-object-as-input-parameter-1228.php You can try with the method described in the below link. http://www.mindfiresolutions.com/ColdfusionMaking-a-c
…
不能 s.ADD(12,34);
textBox1.Text = s.ToString();
是 textbox1.Text = s.ADD(12, 34).ToString(); ? Shouldn’t s.ADD(12,34);
textBox1.Text = s.ToString();
be textbox1.Text = s.ADD(12, 34).ToString(); ?
您只传递对象的属性,而不是整个对象容器。 所以,web方法期待这样的事情: {returnHeader:{“ID”:-1,”OrderHeaderID”:5,”StatusID”:1,”DeliveryCharge”:0,”CreatedBy”:”77777777″,”ApprovedBy”:”77777777″}}
You’re only passing in the object’s properties, not the entire object container. So, the w
…
试着改变 data: ‘{“country”:”‘ + country + ‘”,”city”:”‘ + city + ‘”}’ 至 data: “country=”+country+”&city=”+city Try to change data: ‘{“country”:”‘ + country + ‘”,”city”:”‘ + city + ‘”}’ To data: “country=”+country+”&city=”+city
我想到了。 public static string AutoSave(int ID, string Note)
应该: public string AutoSave(int ID, string Note)
I figured it out. public static string AutoSave(int ID, string Note)
should be: public string AutoSave(int ID, string Note)
我可以想到两个选择: 1)在AJAX调用中使用POST而不是GET: type: “POST”,
或2)如果您必须使用GET,请配置您的Web服务方法以允许GETS: [WebMethod]
[ScriptMethod(UseHttpGet = true)]
public List gettutors(string data)
{
var tutorManager = new TutorManager();
return tutorManager.GetTutorA
…
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132226.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...