2

我正在编写一个应用程序的一部分,它允许文件被拖放,并通过 ajax 上传到 Web 服务器。

这是我将文件上传到 WCF Web 服务的 jQuery 代码片段:

var fileData = JSON.stringify({
    filename: file.name,
    contentType: file.type,
    data: e.target.result
});

$.ajax({
    cache: false,
    url: "/site/app.svc/GetFile",
    type: "POST",
    dataType: "json",
    data: fileData,
    contentType: "application/json; charset=utf-8",
    processData: false
});

这是我的 WCF Web 服务代码片段,它获取文件数据并保存它:

[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
public bool GetFile(string filename, string contentType, string data)
{
    try
    {
        var tokens = data.Split(',');
        File.WriteAllBytes("C:\\" + filename, System.Convert.FromBase64String(tokens[1]));
    }
    catch
    {
        return false;
    }
    return true;
}

这适用于小文件,但是当我达到 80Kb 左右时...它失败并显示消息

413请求实体太大

......有时

500内部服务器错误

关于它在达到特定大小限制时为什么会失败的任何想法?这是对 ajax 帖子大小的限制,还是更可能是 WCF 服务限制了可以发送和不能发送的内容?

4

1 回答 1

1

您是否尝试将配置的这些属性设置为一些大值?maxBufferPoolSize, maxReceivedMessageSize, maxBufferSize

于 2013-02-15T15:37:21.770 回答