嗨,我是新来的,我发现了很多与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);
}
}
答案 0 :(得分:0)
这与maxReceivedMessageSize无关,它是由将流转换为sbyte引起的,您可以尝试直接传输流类型文件。
var stream = System.IO.File.Open(filename, FileMode.Open);
ServiceReference1.CalculatorClient Client = new ServiceReference1.CalculatorClient();
Client.LoadDocuments(stream);