日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实战演习-用wse上传下载文件

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战演习-用wse上传下载文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jillzhang jillzhang@126.com

???? 這幾天,光忙著寫程序員職場了,對wse的翻譯和學習沒有太大的進展,這可不太好,畢竟咱還是靠技術混飯吃的,荒廢了技術怎么行!今天再上一盤有關wse的小菜,目的是想用wse實現大數據的傳輸。

??? 在wse框架結構中,能夠使用Message Transmission Optimization Mechanism (MTOM) 協議來傳輸大數據,這在前文的翻譯中也有提到,詳細內容可以參見WSE 3.0 文檔翻譯:WSE的新功能 中的介紹。本文就是對用MTOM傳輸大數據做一個項目示例,主要解決用web service上傳,下載文件的問題。

??? 實現本示例,需要三步:

???? 1) 創建asp.net xml web服務項目,并對其進行配置編碼?

???? 2) 創建一個web服務的客戶端應用程序,對其進行配置編碼?

???? 3) 準備好測試文件,運行客戶端程序,查看運行結果


  • 創建asp.net xml web服務項目,并對其進行配置編碼

    通過項目模板,創建一個傳統的asp.net xml web service網站工程,在解決方案資源管理中右鍵點擊該工程,選擇wse 3.0 settting,進行如下圖所示的操作

    此操作可以為項目添加對Microsoft.Web.Services3的引用,為項目能使用wse 3.0框架做出第一步設置

    添加引用之后,我們需要設置網絡服務能夠使用MTOM協議來進行消息傳輸,方法如下圖所示,仍通過點擊wse 3.0 settting,然后進行如下的配置

    這里我們可以將Server Mode設置為always或者optional,二者的區別如下:

    Optional(可選的): 不管經Wse處理的請求消息是否經過MTOM編碼,Soap響應或者Soap錯誤都是經過MTOM編碼的

    Always(總是):經wse處理的請求和響應一定要是MTOM編碼的

    經過這個操作,會在web.config中增加如下的配置信息:

    在Service.asmx中添加代碼

    Service端
    using?System;
    using?System.Web;
    using?System.Web.Services;
    using?System.Web.Services.Protocols;
    using?System.IO;

    [WebService(Namespace?
    =?"http://tempuri.org/")]
    [WebServiceBinding(ConformsTo?
    =?WsiProfiles.BasicProfile1_1)]
    public?class?Service?:?System.Web.Services.WebService
    {
    ????
    public?Service?()?{?
    ????}


    ????[WebMethod]
    ????
    public?byte[]?Send(string?fileName)?{
    ????????
    string?filePath?=?Path.Combine(AppDomain.CurrentDomain.BaseDirectory,?fileName);
    ????????
    if?(!File.Exists(filePath))
    ????????
    {
    ????????????
    throw?new?Exception(string.Format("文件:{0}不存在",filePath));
    ????????}

    ????????
    byte[]?buffer?=?File.ReadAllBytes(filePath);
    ????????
    return?buffer;
    ????}

    ????[WebMethod]
    ????
    public?bool?Receive(byte[]?buffer,string?fileName)
    ????
    {
    ????????
    string?filePath?=?Path.Combine(AppDomain.CurrentDomain.BaseDirectory,?fileName);
    ????????File.WriteAllBytes(filePath,?buffer);
    ????????
    return?false;
    ????}

    }

    ?

  • 創建一個web服務的客戶端應用程序,對其進行配置編碼

    創建一個console程序,名為BinaryMTOMClient,也按1中所示添加Microsoft.Web.Services3的引用,然后設置MTOM選項,如下圖所示:

    將Client Mode設置為On表示客戶端允許將Soap消息進行MTOM編碼。此操作會在app.config中增加如下配置信息:

    添加對上面1中創建的網絡服務的web引用,然后將Programe代碼更改如下:??

    ?

    Client端
    using?System;
    using?System.Collections.Generic;
    using?System.Text;
    using?System.IO;

    namespace?BinaryMTOMClient
    {
    ????
    public?class?Program:WseBase.AppBase
    ????
    {

    ????????localhost.ServiceWse?serviceProxy;
    ????????
    public?Program()
    ????????
    {
    ????????????serviceProxy?
    =?new?BinaryMTOMClient.localhost.ServiceWse();
    ????????????ConfigureProxy(serviceProxy);
    ????????}

    ????
    ????????
    static?void?Main(string[]?args)
    ????????
    {
    ????????????Program?p?
    =?new?Program();
    ????????????
    string?fileName?=?"1.txt";
    ????????????p.Download(fileName);
    ????????????fileName?
    =?"2.txt";
    ????????????p.Upload(fileName);
    ????????????Console.Read();
    ????????}

    ????????
    public?void?Download(string?fileName)
    ????????
    {
    ????????????
    try
    ????????????
    {
    ????????????????Console.WriteLine(
    "開始調用網絡服務:"+serviceProxy.Url);
    ????????????????
    byte[]?buffer?=?serviceProxy.Send(fileName);
    ????????????????Console.WriteLine(
    "接收到未加密的數據");
    ????????????????Console.WriteLine(
    "數據長度為:"+buffer.Length.ToString());
    ????????????????File.WriteAllBytes(fileName,?buffer);
    ????????????????
    ????????????}

    ????????????
    catch?(Exception?ex)
    ????????????
    {
    ????????????????Console.WriteLine(ex.Message);???????????????
    ????????????}

    ????????}

    ????????
    public?void?Upload(string?fileName)
    ????????
    {
    ????????????
    try
    ????????????
    {
    ????????????????
    string?filePath?=?Path.Combine(AppDomain.CurrentDomain.BaseDirectory,?fileName);
    ????????????????
    if?(!File.Exists(filePath))
    ????????????????
    {
    ????????????????????Console.WriteLine(
    string.Format("文件:{0}不存在",?filePath));
    ????????????????????
    return;
    ????????????????}

    ????????????????Console.WriteLine(
    "開始調用網絡服務:"?+?serviceProxy.Url);?????
    ????????????????
    byte[]?buffer?=?File.ReadAllBytes(filePath);
    ????????????????serviceProxy.Receive(buffer,?fileName);
    ????????????????Console.WriteLine(
    "發送未加密的數據");
    ????????????????Console.WriteLine(
    "數據長度為:"?+?buffer.Length.ToString());????????????
    ????????????}

    ????????????
    catch?(Exception?ex)
    ????????????
    {
    ????????????????Console.WriteLine(ex.Message);
    ????????????}

    ????????}

    ????}

    }

    ?

  • 準備好測試文件,運行客戶端程序,查看運行結果

    在網絡服務的根目錄中,添加1.txt作為客戶端要下載的文件資源,在客戶端運行目錄中添加2.txt,作為客戶端要上傳的文件資源,按下圖所示,運行客戶端:

    瀏覽網絡服務根目錄,新增了文件2.txt,而客戶端運行目錄,新增了文件1.txt,表示示例成功

  • 示例項目:示例文件

  • 轉載于:https://www.cnblogs.com/jillzhang/archive/2008/01/14/1038223.html

    總結

    以上是生活随笔為你收集整理的实战演习-用wse上传下载文件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。