Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# jQuery POST在服务器上传递空字符串(ASP.NET)_C#_Jquery_Asp.net - Fatal编程技术网

C# jQuery POST在服务器上传递空字符串(ASP.NET)

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

我有一个ASP.NET应用程序,它通过AJAX将数据发送给一个处理程序,处理程序使用我的应用程序这在本地调试时正常工作,但一旦我将解决方案部署到服务器上,处理程序只会收到一个空字符串。我尝试摆弄contentType和dataType,但运气不佳

这是到目前为止我的代码

发送页面的aspx,而“myData”是一个简单的字符串:

$.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”,它可以工作)。如果没有人有线索,我将设置一个测试页面+处理程序来尝试缩小问题范围-但这意味着大量的工作,因此我希望有人在之前面对这个(琐碎的???)问题。。。这真的是一个无法解决的问题吗?!