提供一种基于SoapHeader的自定义验证方式,代码如下:

public class MySoapHeader : System.Web.Services.Protocols.SoapHeader
{
private string userID = string.Empty;
private string userPW = string.Empty; public string UserId
{
get { return userID; }
set { userID = value; }
}
public string UserPW
{
get { return userPW; }
set { userPW = value; }
}
public MySoapHeader()
{ }
public MySoapHeader(string name, string password)
{
userID = name;
userPW = password;
} private bool IsValid(string nUserId, string nPassWord, out string nMsg)
{
nMsg = "";
try
{
if (nUserId == "admin" && nPassWord == "admin")
{
return true;
}
else
{
nMsg = "对不起,你无权调用Web服务";
return false;
}
}
catch
{
nMsg = "对不起,你无权调用Web服务";
return false;
}
}
public bool IsValid(out string nMsg)
{
return IsValid(userID, userPW, out nMsg);
}
}

webservice穿插引用soapHeader:

    [WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
public MySoapHeader myheader = new MySoapHeader();
[WebMethod]
public string HelloWorld()
{
return "Hello World";
} //该地方是调用SoapHeader地方,注意观察
[SoapHeader("myheader")]
[WebMethod(Description="Say Hello My World")]
public string HelloWorld2()
{
string msg = "";
if (!myheader.IsValid(out msg))
{
return msg;
}
return "Hello World";
}
}

客服端动态调用Webservice的方法,可以参考上篇博客

普通添加引用WEBSERVICE调用的方式代码如下:

 static void Main(string[] args)
{ MyService.WebService1SoapClient cmlent = new MyService.WebService1SoapClient();
MyService.MySoapHeader hro=new MyService.MySoapHeader ();
hro.UserId="admin";
hro.UserPW="admin";
string rsult=cmlent.HelloWorld2(hro);
Console.WriteLine(rsult);
Console.ReadKey();
}

最新文章

  1. make的控制函数(error,warning)
  2. oracle的minus返回第一个表中有、第二个表中没有的数据
  3. JSON数据解析(转)
  4. Docker / CI / CD
  5. Mongodb 和 普通数据库 各种属性 和语句 的对应
  6. File类的基本操作之读出所有目录路径
  7. 不能以方法的方式使用不可调用的“system.web.httprequest.querystring”
  8. 网站linux.linuxidc.com有很多好资料
  9. 【Hibernate步步】--一对一映射双向关联具体解释(两)
  10. Oracle-1 - :超级适合初学者的入门级笔记,CRUD,事务,约束 ......
  11. jQuery操作表格(table)的常用方法、技巧汇总
  12. postgresql 安装使用
  13. 数据库学习(MySQL):JDBC的简单增删改查实现
  14. 安装SQL Server 2008时,安装程序配置检查RebootRequiredCheck时失败
  15. 谈谈我对 js原型链的理解
  16. python——函数之装饰器
  17. Ruby学习笔记7: 添加身份验证(adding Authentication)
  18. app.use( )做一个静态资源服务
  19. Java自学入门新的体会0.2
  20. WinForm 窗体间参数传递

热门文章

  1. Redis 数据库
  2. ios学习之UIViewControl生命周期
  3. Linux命令sed
  4. Linux下安装配置MongoDB 3.0.x 版本数据库
  5. [POJ1936]All in All
  6. FastMM的安装方法
  7. HDU 3371 kruscal/prim求最小生成树 Connect the Cities 大坑大坑
  8. 静态资源[org.springframework.web.servlet.PageNotFound]
  9. centos安装ssdb
  10. C/C++程序终止时执行的函数——atexit()函数详解