首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

关于WebService的宣言部分

2012-12-31 
关于WebService的声明部分using Systemusing System.Collectionsusing System.ComponentModelusing Sys

关于WebService的声明部分


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.IO;

namespace WebServiceSkydemo
{
    /// <summary>
    /// Service1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
        private string rootDir;
        public Authentication header;
        public Service1()
        {
            rootDir = Server.MapPath("/test");//服务器端路径映射 ,在IIS中定义一个虚拟路径/test,指向硬盘上的特定目录
        }
        [WebMethod(Description = "Need Authentication!")]
        [System.Web.Services.Protocols.SoapHeader("header")]
        public string GetFile(string filePath)
        {
            if (header.ValidateUser(header.UserName, header.PassWord) ||
                header.ValidateAdmin(header.UserName, header.PassWord))
            {
                FileStream myFile = File.OpenRead(rootDir + '\\' + filePath);
                BinaryReader br = new BinaryReader(myFile);
                byte[] btbuf = new byte[myFile.Length];
                for (int i = 0; i < myFile.Length; i++)
                {
                    btbuf[i] = br.ReadByte();
                }
                return Convert.ToBase64String(btbuf);
            }
            else
            {
                return "";
            }


        }
        [WebMethod(Description = "Need Authentication!")]
        [System.Web.Services.Protocols.SoapHeader("header")]
        public string ChangePassword(string newPass)//修改密码
        {
            string user="";
            if (header.ValidateUser(header.UserName, header.PassWord) ||
                header.ValidateAdmin(header.UserName, header.PassWord))
            {
                user = header.UserName;
            }
            else
            {
                return "没有找到该用户或密码错误";
            }
            if (header.ChangePassWord(user, newPass))
            {
                return "修改成功";
            }
            else
            {
                return "修改失败";
            }
        }
        [WebMethod(Description="Need Authentication!")]
        [System.Web.Services.Protocols.SoapHeader("header")]
        public string AddUser(string userName, string passWord, string auth)
        {
            if (header.ValidateAdmin(header.UserName, header.PassWord))
            {
                header.AddUser(userName, passWord, auth);
                return "添加成功!";
            }
            else
            {
                return "添加失败";
            }
        }
        [WebMethod]
        public string[] GetList()//获取目录列表
        {
            DirectoryInfo info = new DirectoryInfo(rootDir);


            string[] oc = new string[info.GetFiles().Length];
            int i = 0;
            foreach (FileInfo fileInfo in info.GetFiles())
            {
                oc[i] = fileInfo.Name;
                i++;
            }
            return oc;
        }
    }
}


[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]


        [WebMethod(Description = "Need Authentication!")]
        [System.Web.Services.Protocols.SoapHeader("header")]
上面这两段代码干什么用的?
[解决办法]
[WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  [ToolboxItem(false)]
----------------------------------
WebServices所在的唯一的命名空间和绑定。

 [WebMethod(Description = "Need Authentication!")]
------------------------------------------------------
Description是WebMothod所对应下面那个方法的描述性信息。

  [System.Web.Services.Protocols.SoapHeader("header")]
-------------------------------------------------------
这是加入了一个SOAPHeader类的实例header,加入的目的是你下面的方法中要用到这个header。这样可以把你的信息加入的SOAP消息的报头部分,即Header元素的子元素。
你没看到上面有:public Authentication header;吗?
你这个web服务应该还有一个类文件Authentication:SoapHeader(继承于SoapHeader)。

热点排行