使用WCF上传文件.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用WCF上传文件

使用WCF上传文件 ??????? 在WCF没出现之前,我一直使用用WebService来上传文件,我不知道别人为什么要这么做,因为我们的文件服务器和网站后台和网站前台都不在同一个机器,操作人员觉得用FTP传文件太麻烦,我就做一个专门用来上传文件的WebService,把这个WebService部署在文件服务器上,然后在网站后台调用这个WebService,把网站后台页面上传上来的文件转化为字节流传给WebService,然后WebService把这个字节流保存文件到一个只允许静态页面的网站(静态网站可以防止一些脚本木马)。 WebService来上传文件存在的问题是效率不高,而且不能传输大数据量的文件,当然你可以用Wse中的MTOM来传输大文件,有了WCF就好多了,通过使用WCF传递Stream对象来传递大数据文件,但有一些限制: 1、只有 BasicHttpBinding、NetTcpBinding 和 NetNamedPipeBinding 支持传送流数据。 2、 流数据类型必须是可序列化的 Stream 或 MemoryStream。 3、 传递时消息体(Message Body)中不能包含其他数据。 4、TransferMode的限制和MaxReceivedMessageSize的限制等。 下面具体实现:新建一个WCFService,接口文件的代码如下: 定义FileUploadMessage类的目的是因为第三个限制,要不然文件名和存放路径就没办法传递给WCF了,根据第二个限制,文件数据是用System.IO.Stream来传递的 接口方法只有一个,就是上传文件,注意方法参数是FileUploadMessage 接口实现类文件的代码如下: 这篇文章最主要的地方就是下面的Web.Config配置: system.serviceModel ????bindings ??????basicHttpBinding ????????binding?name=FileTransferServicesBinding?maxReceivedMessageSize=9223372036854775807 ??????????messageEncoding=Mtom?transferMode=Streamed?sendTimeout=00:10:00?/ ??????????/basicHttpBinding ????/bindings ????services ??????service?behaviorConfiguration=UploadWcfService.UpLoadServiceBehavior ????????name=UploadWcfService.UpLoadService ????????endpoint?address=?binding=basicHttpBinding?bindingConfiguration=FileTransferServicesBinding?contract=UploadWcfService.IUpLoadService ????????/endpoint ????????endpoint?address=mex?binding=mexHttpBinding?contract=IMetadataExchange?/ ??????/service ????/services ????behaviors ??????serviceBehaviors ????????behavior?name=UploadWcfService.UpLoadServiceBehavior ??????????serviceMetadata?httpGetEnabled=true?/ ??????????serviceDebug?includeExceptionDetailInFaults=false?/ ????????/behavior ??????/serviceBehaviors ????/behaviors ??/system.serviceModel 配置要遵循上面的第一条和第四条限制,因为默认.net只能传4M的文件,所以要在 System.Web配置节下面加上httpRuntimemaxRequestLength=2097151 / 这样WCFService就完成了,新建一个Console项目或者Web项目测试一下。要注意的 是Client端的配置必须要和服务端一样

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档