国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

WCF上傳文件實際應用技巧講解

開發 開發工具
WCF上傳文件是在實際編程中經常遇到的一個問題。對于初學者來說,必須充分掌握這一基本常識,夯實我們所掌握的知識。

WCF開發框架可以幫助我們滿足許多功能需求。在這里我們為大家詳細介紹有關WCF上傳文件的相關應用技巧。希望對大家有所幫助。#t#

在WCF沒出現之前,我一直使用用WebService來上傳文件,我不知道別人為什么要這么做,因為我們的文件服務器和網站后臺和網站前臺都不在同一個機器,操作人員覺得用FTP傳文件太麻煩,我就做一個專門用來上傳文件的WebService,把這個WebService部署在文件服務器上,然后在網站后臺調用這個WebService,把網站后臺頁面上傳上來的文件轉化為字節流傳給WebService,然后WebService把這個字節流保存文件到一個只允許靜態頁面的網站(靜態網站可以防止一些腳本木馬)。

WebService來上傳文件存在的問題是效率不高,而且不能傳輸大數據量的文件,當然你可以用Wse中的MTOM來傳輸大文件,有了WCF就好多了,通過使用WCF傳遞Stream對象來傳遞大數據文件,但WCF上傳文件有一些限制:

1、只有 BasicHttpBinding、NetTcpBinding 和 NetNamedPipeBinding 支持傳送流數據。

2、 流數據類型必須是可序列化的 Stream 或 MemoryStream。

3、 傳遞時消息體(Message Body)中不能包含其他數據。

4、TransferMode的限制和MaxReceivedMessageSize的限制等。

下面具體實現:新建一個WCFService,接口文件的代碼如下:

  1. [ServiceContract]  
  2. public interface IUpLoadService  
  3. {  
  4. [OperationContract(Action = 
    "UploadFile"IsOneWay = true)]  
  5. void UploadFile(FileUploadMessage request);  
  6. }  
  7. [MessageContract]  
  8. public class FileUploadMessage  
  9. {  
  10. [MessageHeader(MustUnderstand = true)]  
  11. public string SavePath;  
  12. [MessageHeader(MustUnderstand = true)]  
  13. public string FileName;  
  14. [MessageBodyMember(Order = 1)]  
  15. public Stream FileData;  

 

定義FileUploadMessage類的目的是因為第三個限制,要不然文件名和存放路徑就沒辦法傳遞給WCF了,根據第二個限制,文件數據是用System.IO.Stream來傳遞的

接口方法只有一個,就是上傳文件,注意方法參數是FileUploadMessage

接口實現類文件的代碼如下:

  1. public class UpLoadService : 
    IUpLoadService  
  2. {  
  3. public void UploadFile(File
    UploadMessage request)  
  4. {  
  5. string uploadFolder = @"C:\kkk\";  
  6. string savaPath = request.SavePath;  
  7. string dateString = DateTime.Now.
    ToShortDateString() + @"\";  
  8. string fileName = request.FileName;  
  9. Stream sourceStream = request.FileData;  
  10. FileStream targetStream = null;  
  11. if (!sourceStream.CanRead)  
  12. {  
  13. throw new Exception("數據流不可讀!");  
  14. }  
  15. if (savaPath == null) savaPath = @"Photo\";  
  16. if (!savaPath.EndsWith("\\")) savaPath += "\\";  
  17. uploadFolderuploadFolder = uploadFolder 
    + savaPath + dateString;  
  18. if (!Directory.Exists(uploadFolder))  
  19. {  
  20. Directory.CreateDirectory(uploadFolder);  
  21. }  
  22.  
  23. string filePath = Path.Combine(upload
    Folder, fileName);  
  24. using (targetStream = new FileStream
    (filePath, FileMode.Create, FileAccess.
    Write, FileShare.None))  
  25. {  
  26. //read from the input stream in 4K chunks  
  27. //and save to output stream  
  28. const int bufferLen = 4096;  
  29. byte[] buffer = new byte[bufferLen];  
  30. int count = 0;  
  31. while ((count = sourceStream.Read
    (buffer, 0, bufferLen)) 
    > 0)  
  32. {  
  33. targetStream.Write(buffer, 0, count);  
  34. }  
  35. targetStream.Close();  
  36. sourceStream.Close();  
  37. }  
  38. }  

 

實現的WCF上傳文件功能是到指定目錄下按照日期進行目錄劃分,然后以傳過來的文件名保存文件。

這篇文章最主要的地方就是下面的Web.Config配置:

 

 

 

  1. < system.serviceModel> 
  2. < bindings> 
  3. < basicHttpBinding> 
  4. < binding name="FileTransferServicesBinding"
     maxReceivedMessageSize="9223372036854775807" 
  5. messageEncoding="Mtom" transferMode=
    "Streamed" sendTimeout="00:10:00" /> 
  6. < /basicHttpBinding> 
  7. < /bindings> 
  8. < services> 
  9. < service behaviorConfiguration=
    "UploadWcfService.UpLoadServiceBehavior" 
  10. name="UploadWcfService.UpLoadService"> 
  11. < endpoint address="" binding=
    "basicHttpBinding" bindingConfiguration=
    "FileTransferServicesBinding" contract=
    "UploadWcfService.IUpLoadService"> 
  12. < /endpoint> 
  13. < endpoint address="mex" binding=
    "mexHttpBinding" contract="IMetadataExchange" /> 
  14. < /service> 
  15. < /services> 
  16. < behaviors> 
  17. < serviceBehaviors> 
  18. < behavior name="UploadWcfService
    .UpLoadServiceBehavior"
    > 
  19. < serviceMetadata httpGetEnabled="true" /> 
  20. < serviceDebug includeExceptionDetailInFaults
    ="false" /> 
  21. < /behavior> 
  22. < /serviceBehaviors> 
  23. < /behaviors> 
  24. < /system.serviceModel> 

 

 

配置要遵循上面的第一條和第四條限制,因為默認.net只能傳4M的文件,所以要在< System.Web>配置節下面加上< httpRuntimemaxRequestLength="2097151" />。這樣WCF上傳文件就完成了,新建一個Console項目或者Web項目測試一下。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-23 14:17:20

WCF配置文件

2010-03-01 13:06:49

WCF繼承

2010-02-22 16:19:25

WCF自托管

2010-02-22 13:28:05

WCF異步調用

2010-02-26 13:40:28

WCF消息頭

2010-03-01 17:52:03

WCF選擇綁定

2010-02-23 09:44:12

WCF dataCon

2010-03-02 10:54:42

WCF回調操作

2010-02-23 10:57:34

WCF Streami

2009-12-22 19:14:36

WCF效率

2010-02-22 17:58:06

WCF異步上傳

2010-02-22 11:25:50

WCF DateSet

2010-02-24 15:20:23

WCF Message

2010-02-26 10:56:06

WCF Stream

2010-03-02 17:35:20

WCF服務加載

2010-02-24 13:48:44

MSMQ使用WCF

2010-02-22 16:26:47

WCF傳輸數據

2010-02-24 09:38:58

WCF應用編碼

2010-02-23 10:25:29

2010-02-24 14:05:08

WCF openati
點贊
收藏

51CTO技術棧公眾號

欧美jizzhd精品欧美巨大免费| 2021国产在线| 日韩在线观看免费全| 日韩有码一区二区三区| 国产福利第一视频在线播放| 亚洲黄页一区| 97在线观看免费高清视频| 欧美黄色片视频| 久久免费看少妇高潮| 青青在线精品| 男人靠女人免费视频网站| 日韩最新在线视频| 99视频热这里只有精品免费| 欧美特黄aaaaaaaa大片| 一本一本a久久| 波多野结衣在线一区| 国产精品三级a三级三级午夜 | 免费看毛片的网址| 日韩大陆毛片av| 日本欧美加勒比视频| sm在线播放| 中文字幕一区二区三区乱码| 亚洲第一精品久久忘忧草社区| 蜜臀久久99精品久久久久宅男| 人人超在线公开视频| 在线观看欧美亚洲| 亚洲香蕉成人av网站在线观看 | 天堂久久一区二区三区| 成人av免费| 亚洲一区尤物| 国产亚洲精品久久| 久久亚洲春色中文字幕久久久| 亚洲一二三区视频| 男人插女人欧美| 国产日韩在线亚洲字幕中文| 欧美在线短视频| 午夜亚洲性色视频| 一个人看的www视频在线免费观看| 欧美高清中文字幕| 久久久久久999| 亚洲国产精品视频| 最新亚洲激情| 在线免费av资源| 999精品网站| 国产精品视频久久久| 色婷婷av一区| 青草综合视频| 日本熟妇人妻中出| 国产91亚洲精品| 91国偷自产一区二区开放时间 | 日韩经典中文字幕在线观看| 成人午夜私人影院| 一区二区三区亚洲变态调教大结局 | 欧美在线观看视频一区| 国产成人三级视频| 日韩亚洲欧美中文高清在线| 国产精品高潮呻吟久久| 欧美在线黄色| 日本不卡1234视频| 麻豆一区二区99久久久久| 国产三级免费观看| 欧美激情亚洲自拍| 亚洲激情免费观看| 国产欧美在线| 午夜av成人| 天天躁日日躁狠狠躁欧美巨大小说| 免费a级人成a大片在线观看| 性网站在线免费观看| 一色桃子在线| 亚州欧美一区三区三区在线| 好吊妞www.84com只有这里才有精品| 国产精品免费看久久久香蕉| 欧美成人精品激情在线观看| 九色成人免费视频| 欧美日韩国产系列| 国产成人av福利| 日韩网站在线免费观看| 特级毛片在线免费观看| 久久这里只有精品18| 久久久福利视频| 欧美成人一区二区三区片免费| 好吊成人免视频| 国产亚洲精品免费| 视频一区免费在线观看| 亚洲一区色图| 伊人久久婷婷| 91亚洲永久精品| 国产精品久久久久久久久果冻传媒| 国产曰批免费观看久久久| 欧美大片网站| 男人插曲女人视频免费| 中文字幕在线看| 久久男人天堂| 日韩高清电影免费| 玖玖玖视频精品| 一区二区三区视频免费观看| 精品一区毛片| 美女91精品| 激情久久综合| 亚洲日本免费电影| 欧美高清免费| 日日狠狠久久| 久操国产精品| 一本一道久久a久久精品蜜桃| 亚洲v天堂v手机在线| 精品国产乱码久久久久久蜜坠欲下| 久久综合丝袜日本网| 欧美日韩一区二区三区免费看| 日韩av在线网站| 97香蕉久久超级碰碰高清版| 国产啪精品视频网站| 蜜臀久久99精品久久久画质超高清| 在线午夜影院| 永久免费在线看片视频| 色噜噜亚洲精品中文字幕| 国产三级精品视频| 国产欧美一区二区三区精品观看| 水莓100国产免费av在线播放| 精品国产乱码久久久久久88av| 欧美一区二区三区啪啪| 久久国产日韩欧美精品| 成人av色网站| 男女视频网站免费观看| 国产a一区二区| 亚洲免费中文字幕| 国产精品热久久久久夜色精品三区| 香蕉综合视频| 九九色在线视频| 成人满18在线观看网站免费| 91成人免费在线观看| 日韩国产欧美视频| 一本大道色婷婷在线| www.99av.com| 91超碰在线电影| 亚洲第一男人av| 中文字幕成人网| 一本色道久久综合亚洲精品高清| 中文字幕系列一区| 在线播放evaelfie极品| 三区精品视频| 久久久久中文字幕| 欧美日韩www| 久久亚洲精华国产精华液| 欧美成人69av| 精品123区| 亚洲成av人影片在线观看| 手机看片日韩国产| 国产欧美一区二区三区久久人妖| 亚洲成人av在线播放| 中文字幕欧美日韩一区| 99视频精品免费观看| 香蕉大人久久国产成人av| 91在线不卡| 国产日韩一区二区在线观看| 国产精品久久久久久免费观看| 日韩一中文字幕| 欧美性色黄大片手机版| 91日韩在线专区| 日韩午夜精品| 黄色网一区二区| caoporn-草棚在线视频最| 国产自产在线视频一区| xvideos成人免费中文版| 日韩欧美主播在线| 99v久久综合狠狠综合久久| 亚洲经典在线| 日韩一级电影| 日韩不卡视频在线观看| 网友自拍视频在线| 成人亚洲在线观看| 天堂av免费看| av激情久久| 2019中文字幕全在线观看| 日韩精品久久久久久福利| 精品露脸国产偷人在视频| 成人免费不卡视频| 日韩精品一级中文字幕精品视频免费观看| 国产精品一在线观看| 亚洲电影有码| 亚洲色图美国十次| 日本a一级在线免费播放| 日本成人黄色网址| 少妇人妻在线视频| 色爱区成人综合网| 国产精品免费一区二区三区观看| 欧美孕妇毛茸茸xxxx| 日韩最新中文字幕电影免费看| 日韩精品一区在线观看| 一本一道波多野结衣一区二区| 亚洲欧美日韩在线不卡| 久久久精品一品道一区| 国产成人综合亚洲91猫咪| 免费日韩精品中文字幕视频在线| 久久中文亚洲字幕| 牛牛影视一区二区三区免费看| 成人精品三级| 久草在线资源福利站| 男人天堂亚洲天堂| 最近中文字幕免费mv2018在线| 国产经典自拍视频在线观看|