您的位置:首页 > 其它

WebServices 简单安全验证以及调用频率限制

2016-09-29 08:28 369 查看
//服务端代码
namespace WebServicesTest
{
/// <summary>
/// Security 的摘要说明
/// </summary>
[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 Security : System.Web.Services.WebService
{
public SecurityHeader securityKey = new SecurityHeader();
public static DateTime lastTime = new DateTime(2010,1,1);

[WebMethod]
[SoapHeader("securityKey")]
public string HelloWorld(string show)
{
if (DateTime.Now.Subtract(lastTime).TotalSeconds < 30)//30秒
return "访问频率过高!";
lastTime = DateTime.Now;
if (securityKey.SecurityKey.Equals("11223"))
{
return "Security HelloWorld " + show;
}
else
{
return "No permissions.";
}
}

[WebMethod]
public string HelloWorld1(string show)
{
return "Public HelloWorld1  " + show;
}
}

public class SecurityHeader : SoapHeader
{
public string SecurityKey
{
get;
set;
}
}
}
 

//调用端代码

static void Main(string[] args)
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("第" + i.ToString() + "次调用。");
                SecurityService();
                Console.WriteLine("-----------------------------");
                System.Threading.Thread.Sleep(10000);
            }
        }

        private static void SecurityService()
        {
            SecurityHeader header = new SecurityHeader();
            header.SecurityKey = "11223";
            SecuritySoapClient client = new SecuritySoapClient();
            Console.WriteLine(client.HelloWorld1("HelloWorld1:公用"));
            Console.WriteLine(client.HelloWorld(header, "HelloWorld:私有"));
        }


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐