我正在尝试使用“wsDualHttpBinding”将一个大对象(300 MB)从客户端上传到服务。
使用“basicHttpBinding”,我可以上传大对象(1.5 GB 文件)。
我需要使用“wsDualHttpBinding”。但是,使用“wsDualHttpBinding”,我只能上传 28 MB。
如果我上传 100 MB 对象,它会显示“无法分配托管内存缓冲区...”
你能告诉我,如何使用“wsDualHttpBinding”上传大对象(300 MB)。
提前致谢,
穆鲁甘
这是我正在使用的配置:
<wsDualHttpBinding>
<binding name="Test"
closeTimeout="04:10:00"
openTimeout="04:10:00"
receiveTimeout="04:10:00"
sendTimeout="04:10:00"
bypassProxyOnLocal="false"
transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
messageEncoding="Mtom"
textEncoding="utf-16"
useDefaultWebProxy="true">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<reliableSession
ordered="true"
inactivityTimeout="04:10:00" />
<security mode="Message">
<message clientCredentialType="Windows"
negotiateServiceCredential="true" />
</security>
</binding>
</wsDualHttpBinding>
和合同
public interface IFileUploaderService
{
[OperationContract]
void Upload(MyFileInfo remoteFileInfo);
}
public interface IFileUploaderServiceCallBack
{
[OperationContract(IsOneWay = true)]
void OnNotificationSend(string message);
}
[MessageContract]
public class MyFileInfo : IDisposable
{
[MessageBodyMember(Order = 1)]
public System.IO.Stream FileByteStream;
public void Dispose()
{
if (FileByteStream != null)
{
FileByteStream.Close();
FileByteStream = null;
}
}
}