quashBox,
Я только что прошел это упражнение только на прошлой неделе, ключ заключается в потоковой передаче вложений MTOM, кажется, это наиболее эффективный способ отправки больших вложений. Вот несколько ресурсов, которые я только что выкопал и нашел очень полезными ...
MSDN - Как включить потоковую передачу
http://msdn.microsoft.com/en-us/library/ms789010.aspx
Передача больших сообщений в блоге WCF.
http://nagavitalp.blogspot.com/2011/04/transfer-large-messages-in-wcf-part-1.html
Поток WCF: загрузка файлов по HTTP
http://kjellsj.blogspot.com/2007/02/wcf-streaming-upload-files-over-http.html
Несколько высокоуровневых клавиш:
в ваших контрактах с сообщениями должен быть один элемент тела Stream, все остальные элементы должны быть помещены в заголовок сообщения, например (извините за VB.NET, но магазин, которым я сейчас пользуюсь):
<MessageContract()>
Public Class StreamAttachmentRequest
<MessageHeader(MustUnderstand:=True)>
Public Property AttachmentName As String
<MessageBodyMember(Order:=1)>
Public Property Attachment As Stream
End Class
ваша привязка должна быть настроена для потоковой передачи MTOM. как ...
<bindings>
<basicHttpBinding>
<binding name="TestCaseBasicBinding"
messageEncoding="Mtom"
transferMode="StreamedRequest"
maxReceivedMessageSize="2147483647"
closeTimeout="00:30:00"
openTimeout="00:30:00"
receiveTimeout="00:30:00"
sendTimeout="00:30:00">
вам может потребоваться установить максимальную длину запроса, если вы передаете действительно большие вложения
<httpRuntime executionTimeout="1800" maxRequestLength="2097151" />
Удачи с этим,
Patrick