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!"给出的。 
 
                   
实现带有用户身份验证的文件传输Web Service(3) (转)
                    80酷酷网    80kuku.com 
       
  
 
 
  
