【发布时间】:2012-05-02 16:05:47
【问题描述】:
我正在使用 WSHttpBinding 开发 WCF 文件上传器。我希望上传大约 10 mb 的文件(不是在那个游戏上玩精确的游戏,但不会让文件变得更大)。一切都很好,最高可达 5mb。之后,我开始收到 HTTP 500 错误。
我的绑定设置如下:
wsBinding.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max;
wsBinding.MaxBufferPoolSize = 52428800;
wsBinding.MaxReceivedMessageSize = 13631488;
wsBinding.ReceiveTimeout = new TimeSpan(0, 3, 0);
我的 httpRuntime maxRequestLength 在 web.config 中是 20480kb
我的请求如下所示:
POST http://mywebsite/FileUploader.svc HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8;action="http://namespace/UploadPhoto"
Content-Length: 13979476
Host: mywebsite
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:fil="http://namespace">
<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:Action>http://namespace/IFileUploaderSvc/UploadPhoto</wsa:Action></soap:Header>
<soap:Body>
<fil:UploadPhoto>
<fil:AuthorizationToken>(Password)</fil:AuthorizationToken>
<fil:ProgramName>AProgram</fil:ProgramName>
<fil:FileName>bigolefile.jpg</fil:FileName>
<fil:File>(base 64 file data)</fil:File>
</fil:UploadPhoto>
</soap:Body>
</soap:Envelope>
我使用 WSHttpBinding,而不是 WebHttpBinding,这一点非常重要。 提前致谢, 安德鲁
【问题讨论】:
-
您的 WCF 服务有任何配置,还是通过代码配置和托管?还可以尝试在您的服务上启用跟踪,以查看上传较大文件失败的原因:msdn.microsoft.com/en-us/library/ms733025.aspx
-
看看这个:debugmode.net/2011/07/18/…。此处使用了 BasicHttpBinding,但本文包含一些可能对您有所帮助的信息。
标签: wcf file-upload wcf-binding