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

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


Author: 曹勇刚  From:Internet


      下面我们生成一个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=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!"给出的。

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [C#] 的这些文章也感兴趣:

c#中使用DateDiff
VisualStudio.Net内幕(8)
实例介绍C#GUI开发
.Net的精髓-XML和SOAP(三)
c#重点知识解答(五代理:一)
C#进阶(六)
C#实现所有经典排序算法
Hessian(C#)介绍及使用说明
C#2.0中的泛型学习
C#2.0新特性探究之模拟泛型和内置算法