本文主要通过示例介webservice的安全性调用有很多方法例如SSL,WCF,WSE3,SoapHeader等,这里仅介绍利用SoapHeader验证web service调用的合法性,
一建立Web service项目,新建一个APIService.asmx其后台代码如下
二、添加一个PassPort.asmx,继承APIWebService,主要是为了重用SoapHeader,
调用方法如下(红色代码部分):
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
namespace Downmoon.API
{
/// <summary>
/// PassPort 的摘要说明 Downmoon Last Modified
/// </summary>
[WebService(Namespace = "欢迎与邀月交流,net技术与软件架构.API")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class PassPort : APIService
{
public PassPort()
{
}
#region Members
#endregion
#region Methods
#region 测试安全信息
[WebMethod(Description = "Test Safe Invoke", EnableSession = true, CacheDuration = 30),SoapHeader("SHeader")]
public string HelloWorld()
{
if(IsLegalInvoked())
{
return "Suceed!";
}
else{
return "Illegal Invoke!";
}
}
#endregion
#endregion
}
}
三、建立Vs2005测试项目,并添加一个测试类(vs2005会自动生成,呵呵)
修改后代码如下:
四、在测试管理器中勾选该测试类
右键“运行选中的测试”,即可看到运行结果:通过!
标准输出 Suceed!
此时如果在浏览器中直接调用该服务,将会出现 “Illegal Invoke!”