C# jQuery POST在服务器上传递空字符串(ASP.NET)
我有一个ASP.NET应用程序,它通过AJAX将数据发送给一个处理程序,处理程序使用我的应用程序这在本地调试时正常工作,但一旦我将解决方案部署到服务器上,处理程序只会收到一个空字符串。我尝试摆弄contentType和dataType,但运气不佳 这是到目前为止我的代码 发送页面的aspx,而“myData”是一个简单的字符串:C# jQuery POST在服务器上传递空字符串(ASP.NET),c#,jquery,asp.net,C#,Jquery,Asp.net,我有一个ASP.NET应用程序,它通过AJAX将数据发送给一个处理程序,处理程序使用我的应用程序这在本地调试时正常工作,但一旦我将解决方案部署到服务器上,处理程序只会收到一个空字符串。我尝试摆弄contentType和dataType,但运气不佳 这是到目前为止我的代码 发送页面的aspx,而“myData”是一个简单的字符串: $.ajax({ type: "POST", url: "handlers/changeRiskGroup.ashx", data: myDa
$.ajax({
type: "POST",
url: "handlers/changeRiskGroup.ashx",
data: myData,
// tried all those content/dataTypes without any luck
//contentType: "text/plain",
//dataType: "text",
//contentType: "application/json; charset=utf-8",
//dataType: "json",
error: function (xhr, status, error) {
console.log(xhr.responseText);
},
success: function (msg) {
console.log(msg);
}
});
.ashx.cs接收处理程序:
public void ProcessRequest(HttpContext context) {
//string data = new StreamReader(context.Request.InputStream).ReadToEnd();
var data = String.Empty;
context.Request.InputStream.Position = 0;
using(var inputStream = new StreamReader(context.Request.InputStream)) {
data = inputStream.ReadToEnd();
}
if (data != "") {
// doing something with my data here.
// this is never reached while on the server, but works fine locally!
} else {
context.Response.Write("Please supply data to the risk group service!");
}
}
public bool IsReusable {
get {
return false;
}
}
}
在本地调试时,会填充.ashx.cs文件中的数据
变量,但在服务器上始终为“”。我不知道为什么
var para={};
para.myData="abcd"
$.ajax({
type: "POST",
url: "handlers/changeRiskGroup.ashx",
data: para,
error: function (xhr, status, error) {
console.log(xhr.responseText);
},
success: function (msg) {
console.log(msg);
}
});
从服务器端
string myData=contect.Request.Form["myData"].toString();
简单,我花了20个小时才弄明白。在这里找到了答案: 简而言之,我在项目中创建了一个空白页面,以确保没有插件等干扰jQuery的执行。此外,我创建了一个非常简单的掩码,用于向处理程序URL提交某些数据。在这个掩码中,我用不同的方式发布数据,当我尝试将POST作为[WebMethod]实现时,我终于得到了一个线索,因为响应是“301永久移动”自WebMethod。因此,我可以开始调查并发现我的服务器正在降低URL的大小写,显然jQuery/HTTP不喜欢这样
我希望这篇文章能帮助其他遇到类似问题的人。您是否验证了客户端(Jquery)是否正在使用Fiddler向部署的版本发送相同的数据?您的本地设置是否与服务器上的相同?如果您使用的是相同的代码和相同的浏览器,那么您使用的服务器可能会配置不同,这就是需要更新或修改的地方。您能举一个例子说明
myData
的值吗?@Mendhak-是的,发送页面有正确的数据,我刚刚用fiddler验证过。@ZathrusWriter-到目前为止是的。哪些设置主题会影响到服务器的帖子?已尝试解决方案,在本地运行良好。在服务器请求上部署时。表单[“myData”]为空。如果它在本地工作,则必须在服务器上工作。可能URL和post会有所不同。这也是我的想法——基本上是正确的,但在某些地方可能存在一个小问题。处理程序的URL是以前的一个问题(“/handlers/myhandler.ashx”在本地工作,但在服务器上不工作,将其更改为“handlers/myhandler.ashx”,它可以工作)。如果没有人有线索,我将设置一个测试页面+处理程序来尝试缩小问题范围-但这意味着大量的工作,因此我希望有人在之前面对这个(琐碎的???)问题。。。这真的是一个无法解决的问题吗?!