即使我的文件很小,maxreceivedmessagesize也会出错

时间:2020-07-21 21:00:20

标签: c# wcf

嗨,我是新来的,我发现了很多与maxReceivedMessageSize相关的问题,但是我想详细了解为什么发生。

我的文件是pdf(大小= 3MB),并且我已经配置了maxReceivedMessageSize =“ 10485000”(10mb),所以它应该足够了,但不是,我必须将其值更改为104850000(100 MB),采用这种方式工作。

为什么会引发错误?我发送给服务的消息中文件的大小是否发生变化?正如我提到的使用新值的方法一样,但是我想了解为什么如果我的文件只有3MB,为什么我需要100 MB的值

我将此对象发送到服务

 public class Document
{
    [DataMember]
    public string DocumentName { get; set; }

    [DataMember]
    public sbyte[] DataBytes { get; set; }
}

这是我用来发送文件的方法:

       private static void SendFile()
    {
        try
        {
            using (var stream = System.IO.File.Open(filename, FileMode.Open))
            {
                SendFile.LoadDocument.Document document = new SendFile.LoadDocument.Document();
                document.DocumentName = "MyFile_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".pdf";
                document.DataBytes = stream.ToSbytes();

                LoadDocumentClient service = new LoadDocumentClient();
                service.LoadDocuments(document);
            }
        }
        catch (CommunicationException e)
        {
            Console.WriteLine(e);
        }
    }

1 个答案:

答案 0 :(得分:0)

这与maxReceivedMessageSize无关,它是由将流转换为sbyte引起的,您可以尝试直接传输流类型文件。

 var stream = System.IO.File.Open(filename, FileMode.Open);
 ServiceReference1.CalculatorClient Client = new ServiceReference1.CalculatorClient();
 Client.LoadDocuments(stream);