Asp.net 400当文件达到一定大小时,将多部分formdata发布到WCF服务时出错 问题:
我正在尝试使用jQuery ajax和javascript FormData对象将文件上载到web服务。它适用于大小小于60KB的文件。但是,对于大于70KB的文件,我从服务器得到“400错误请求”响应。我在某个地方遗漏了一些东西,但似乎就是找不到。你知道我应该在哪里找到故障源吗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,但遇到了相同的行为 服务器设置:
- 在开发环境和生产环境中都失败
- 尝试了几种不同的浏览器李>
- 行为独立于文件内容。二进制、文本等的行为相同李>
- 尝试使用原始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"
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会自动以编程方式为部署在那里的服务连接绑定。为了解决这个问题,可以使用自定义服务工厂类以编程方式访问设置。有关更多信息,请参见此