需要向.net WCF Web服务发送文件的指导



提前感谢大家的协助!

我正在创建一个。net WCF web服务(c#)用于发送电子邮件。基本上是一个所有内部应用都可以使用的中央邮件服务。我的障碍是电子邮件附件(1个或更多)…我一直在寻找将二进制数据发送到WCF web服务的最佳实践。需要考虑以下内容:

  • 所有对该服务的请求将是内部的
  • 附件是可选的,但可以包含多于1个
  • 对于多个附件,我需要确保我的服务不会超时

我读过很多关于将二进制转换为base64字符串的文章,但是很多性能上的缺点(特别是多文件)让我不敢接受这种方法。所以我一直在搜索,发现了一些MTOM主题,它们应该对二进制文件传输更有效。

基本上,我需要指导什么方法是这种类型的功能的最佳实践,最好是一些示例代码发送给我。

再次感谢您的宝贵时间!

quashBox,

我上周刚刚完成了这个练习,关键是流式传输MTOM附件,这似乎是发送更大附件的最有效方式。这里有一些我刚刚挖掘出来的资源,发现它们非常有用。

MSDN -如何启用流媒体http://msdn.microsoft.com/en-us/library/ms789010.aspx

在WCF博客中传输大消息http://nagavitalp.blogspot.com/2011/04/transfer -大-信息-在wcf - - 1.部分html

WCF Streaming:通过HTTP上传文件http://kjellsj.blogspot.com/2007/02/wcf-streaming-upload-files-over-http.html

几个高级键:

你的消息契约需要有一个单一的流体成员,所有其他元素都需要放在消息头中,比如(对不起,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" />

祝你好运帕特里克。

相关内容

  • 没有找到相关文章

最新更新