1

我正在尝试使用“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;
        }
    }
}
4

0 回答 0