Javascript Can';t通过AJAX将Base64字符串发送到C#

Javascript Can';t通过AJAX将Base64字符串发送到C#,javascript,c#,asp.net,ajax,Javascript,C#,Asp.net,Ajax,我只是通过ajax将base64字符串发送到一个带有C#代码的aspx页面。这根绳子永远到不了C#。它总是空出来的 ajax将在post请求中发送,所有其他表单字段都将在post fine中发送 我的字符串看起来像:qmfzzsa2ncdigjqgtw96awxsysbezzxzlbg9wzxigtmv0d29yaw== 将字符串发送到c#代码隐藏的方法是: string signature = Request.Form.Get("newsig"); var pdfContents = PDFH

我只是通过ajax将base64字符串发送到一个带有C#代码的aspx页面。这根绳子永远到不了C#。它总是空出来的

ajax将在post请求中发送,所有其他表单字段都将在post fine中发送

我的字符串看起来像:
qmfzzsa2ncdigjqgtw96awxsysbezzxzlbg9wzxigtmv0d29yaw==

将字符串发送到c#代码隐藏的方法是:

string signature = Request.Form.Get("newsig");
var pdfContents = PDFHelper.GeneratePDF(pdfPath, formFieldMap, signature);
背后的代码:

string base64image = sig;
//  Convert base64string to bytes array
var newbytes = Convert.FromBase64String(base64image);
有时base64字符串很长-这可能是问题所在吗?有没有更好的方法来处理c#中的base64字符串

更新:我的ajax post方法:

    var localbase64string = localStorage["signature"];
    var b64 = localbase64string.replace(/^data:image\/(png|jpg);base64,/, "");

    var formData = new FormData($(this)[0]);
    formData.append( 'newsig', b64);

    var sendPost = 'http://xxx.xx/this.aspx';

    $.ajax({
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false,
        timeout: 50000,
        url: sendPost,
        success: function(data){
            alert('Sent!');
            window.location.href = './../mainmenu.html';

       }, error:function (){  
                    alert("something went wrong!");
        }

    });

检查发送内容的另一种方法是在C#receiving方法中使用Request.content.ReadAsStringAsync().Result

下面是我快速整理的一个示例:

C#:

public IHttpActionResult PostB64Test(string one, string two)
    {
        string b64 = Request.Content.ReadAsStringAsync().Result;            
        return Ok();
    }
// here's an example url. I'm adding the base64 string to the POST body,
// and the other parameters in the query string.

 var url = '/api/xxx/b64/?one=' +1 +'&two=' +2 +'';

 var b64 = ""; // your base64 string e.g., "9j/4AAQSkZJRgABAg..."
 $http.post(url, { b64: b64 });
JS:

public IHttpActionResult PostB64Test(string one, string two)
    {
        string b64 = Request.Content.ReadAsStringAsync().Result;            
        return Ok();
    }
// here's an example url. I'm adding the base64 string to the POST body,
// and the other parameters in the query string.

 var url = '/api/xxx/b64/?one=' +1 +'&two=' +2 +'';

 var b64 = ""; // your base64 string e.g., "9j/4AAQSkZJRgABAg..."
 $http.post(url, { b64: b64 });

你的ajax代码在哪里?我不认为这是必要的,因为表单发布得很好。包括我以前使用过的base64字符串。我可以看到响应获取字符串,但每次都将其发布为空。使用哪种ajax方法发送数据,POST或GET,如果是GET,则它将不是表单,而是查询字符串的一部分?@Dreamweaver我刚刚用ajax调用更新了我的初始发布。这是一个将表单数据从html页面发送到带有c#codebehind的aspx页面的简单帖子。所有其他数据发布都没有问题,但base64字符串始终为空。将b64替换为类似“dummy”的小文本,然后查看是否在服务器端得到它。如果是,那么b64有问题。(最大投递字节大小等)如果不是,则说明投递机制/页面方法等有问题。此外,请尝试在Fiddler中查看请求/响应。