实现带有用户身份验证的文件传输Web Service(3) (转)

80酷酷网    80kuku.com

  web作者: 曹勇刚   www.ASPCool.com 时间:2001-11-28 22:51:59  阅读次数:493


     下面我们生成一个web service,起名叫FileServer,在FileServer.asmx中有如下代码:
     
    <% WebService Language="c#" Codebehind="FileServer.asmx.cs" Class="useResData.FileServer" %>
     
      大家可以看到Codebehind技术是如何被使用的。在Visual Studio.Net中,自动生成的代码大量使用这样的语句。它使得设计页面和编写代码被划分开了。
     
      在FileServer.asmx.cs中,代码如下:
     
    using System;
     
    using System.Collections;
     
    using System.ComponentModel;
     
    using System.Data;
     
    using System.Diagnostics;
     
    using System.Web;
     
    using System.Web.Services;
     
    using System.IO;
     
    namespace useResData
     
    {
     
     ///
     
     /// Summary description for FileServer.
     
     ///
     
     public class FileServer : System.Web.Services.WebService
     
     {private string rootdir;
     
      public FileServer()
     
      {
     
      //CODEGEN: This call is required by the ASP.NET Web Services Designer
     
      InitializeComponent();
     
      rootdir=Server.MapPath("/caomo/提供传输的文件");
     
      }
     
     
     
      #region Component Designer generated code
     
      ///
     
      /// Required method for Designer support - do not modify
     
      /// the contents of this method with the code editor.
     
      ///
     
      private void InitializeComponent()
     
      {
     
      }
     
      #endregion
     
      ///
     
      /// Clean up any resources being used.
     
      ///
     
     protected override void Dispose( bool disposing )
     
     {
     
     }
     
     public Authentication header; //定义用户身份验证类变量header。
     
      [WebMethod(Description="need authentication!")]
     
      [System.Web.Services.Protocols.SoapHeader("header")]
       //用户身份验证的soap头
     
     public string GetFile(string filePath)
     
     {
     
      if (header.ValidUser(header.Username,header.Password)) //用户身份验证
     
      {
     
       FileStream myfile=File.OpenRead(rootdir+filePath);
     
       BinaryReader br=new BinaryReader(myfile);
     
       byte[] btBuf=new byte[myfile.Length];
     
       long i=0;
     
       while (br.PeekChar()>-1)
     
       {
     
        btBuf[i]=br.ReadByte();
     
        i++;
     
       }
     
       myfile.Close();
     
       return System.Convert.ToBase64String(btBuf);
     
      }
     
      else return null;//用户身份验证failed
     
     }
     
      运行它。将会得到如图1所示页面:
     
     
    图 1
     
      大家应该注意到名为GetFile的服务是我给的代码中的Web Method,下面的“need authentication!”是由WebMethod定义中的Description="need authentication!"给出的。

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: