Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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
Asp.net 400当文件达到一定大小时,将多部分formdata发布到WCF服务时出错 问题:_Asp.net_Ajax_Sharepoint_File Upload_Multipartform Data - Fatal编程技术网

Asp.net 400当文件达到一定大小时,将多部分formdata发布到WCF服务时出错 问题:

Asp.net 400当文件达到一定大小时,将多部分formdata发布到WCF服务时出错 问题:,asp.net,ajax,sharepoint,file-upload,multipartform-data,Asp.net,Ajax,Sharepoint,File Upload,Multipartform Data,我正在尝试使用jQuery ajax和javascript FormData对象将文件上载到web服务。它适用于大小小于60KB的文件。但是,对于大于70KB的文件,我从服务器得到“400错误请求”响应。我在某个地方遗漏了一些东西,但似乎就是找不到。你知道我应该在哪里找到故障源吗 在开发环境和生产环境中都失败 尝试了几种不同的浏览器 行为独立于文件内容。二进制、文本等的行为相同 尝试使用原始XMLHttpRequest而不是下面显示的jQueryAjax,但遇到了相同的行为 服务器设置:

我正在尝试使用jQuery ajax和javascript FormData对象将文件上载到web服务。它适用于大小小于60KB的文件。但是,对于大于70KB的文件,我从服务器得到“400错误请求”响应。我在某个地方遗漏了一些东西,但似乎就是找不到。你知道我应该在哪里找到故障源吗

  • 在开发环境和生产环境中都失败
  • 尝试了几种不同的浏览器
  • 行为独立于文件内容。二进制、文本等的行为相同
  • 尝试使用原始XMLHttpRequest而不是下面显示的jQueryAjax,但遇到了相同的行为
服务器设置:
  • 我的web服务托管在SharePoint 2010应用程序(ASP.NET IIS.NET 3.5)中
  • 我已经检查了web.config中的httpRuntime设置,以确保它们足够大:

      httpRuntime maxRequestLength="102400" executionTimeout="3600" 
    
  • 我已检查applicationHost.config文件中的requestLimits设置:

      requestLimits maxAllowedContentLength="1024000000" 
    
客户端代码: 客户端代码正在打包一个FormData对象,其中包含一个文件和json字符串中的一些数据:

formSubmission.prototype.attach = function (servicePath, fileInputElement, successCallback, failedCallback) {
    if (typeof window.FormData === 'undefined') {
        alert(COB.BasicForms.BROWSER_SUPPORT_MSG);
        // More work will have to be done to deal with IE 8 and 9.
        return false;
    }

    var baseServicePath = COB.BasicForms.SERVICE_ADDRESS;

    var formdata = new FormData();
    // This object will be sent as json. Some of its properties
    // are necessary for the server to process the file properly.
    formdata.append('submission', JSON.stringify(this));

    var filename = $(fileInputElement).val().split('\\').pop();
    // We will only accept one file at a time...
    formdata.append('file', fileInputElement.files[0], filename);

    var jqxhr = $.ajax({
        type: "POST",
        url: baseServicePath + "//AttachFile",
        data: formdata,
        contentType: false,
        processData: false,
        cache: false,
        dataType: "json"
    })

    .done(successCallback)
    .fail(failedCallback);
    return true;
}
服务器代码: 正如预期的那样,当返回400错误时,服务器端代码永远不会被命中。但是,当文件小于60k时,服务器端代码可以正常工作。以下是带有装饰的基本签名:

    [OperationContract]
    [WebInvoke(
       Method = "POST",
       BodyStyle = WebMessageBodyStyle.Bare,
       RequestFormat = WebMessageFormat.Json,
       ResponseFormat = WebMessageFormat.Json,
       UriTemplate = "AttachFile")]
    FormAttachmentResult AttachFile();

任何想法都是最受欢迎的。

在上面熟睡总是有帮助的。我忘了在web.config部分打开允许的邮件大小。默认情况下,它将消息限制在65KB左右。希望这有助于其他人当试图设置所有的旋钮和开关

补充说明: 对于SharePoint用户,由于我的服务托管在vti_bin中,因此无法修改web.config,因为SharePoint会自动以编程方式为部署在那里的服务连接绑定。为了解决这个问题,可以使用自定义服务工厂类以编程方式访问设置。有关更多信息,请参见此