asp.net一般处理程序

asp.net一般处理程序可以处理一个外部请求。
    接下来我们看一下底下建立的类,他实现了一个关键的接口:IHttpHandler实现这个接口表明你现在将以何种方式处理外部的请求。接下来我们将焦点转向IsReusable,在ProcessRequest中有一个参数是Content,他是一个HttpContent类型,Content对象提供对于为HTTP请求提供服务的内部服务器对象(如:Request、Resonse、Session、Server)的引用。也就是可以访问我的几大服务器对象。
    现在来看个简单的例子: 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Maticsoft.BLL;
using Newtonsoft.Json;
 

namespace Maticsoft.Web.Header
{
    /// <summary>
    /// Handler1 的摘要说明
    /// </summary>
    public class Handler1 : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
           
            string userId=context.Request["userId"];//获取用户账号
            string userPwd=context.Request["userPwd"];//获取用户密码
            //JsonConvert.DeserializeObject(userId);//JSON反序列化 用户账号
            //JsonConvert.DeserializeObject(userPwd);//JSON反序列化密码
            UserInfot userInfo = new UserInfot();
 
            //if (userInfo.Login(Convert.ToInt32(userId), userPwd))
            //{
            //    context.Response.Write("True");
            //}
            //else
            //{
            //    context.Response.Write("False");
            //}
            if (userId=="111"&&userPwd=="111")
            {
                context.Response.Write(JsonHelper.GetJson("True"));
            }
            else
            {
                context.Response.Write(JsonHelper.GetJson("False"));
            }
          
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

其访问地址为:http://localhost:3448/header/handler1.ashx?userId=111&userPwd=111,于是页面上变会出现True,如果账号密码不为111则返回“False”

在这里用URL直接带参数请求,显然是不安全的!经过和zjl老师的指导,发现了一个不错的解决方案,那就是.Net 4.5中增加的一个新的System.Net.Http.HttpClient名字空间(在 System.Net.Http.dll 中),httpClient的用法参考http://www.cnblogs.com/TianFang/archive/2012/03/10/2389480.html。个人认为是一篇好文章

 


这么自己写了一个JsonHelp类,内容如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Json;
using System.IO;

namespace WebServ
{
    public class JsonHelper
    {
        /// <summary>
        /// 生成Json格式
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string GetJson<T>(T obj)
        {
            DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
            using (MemoryStream stream = new MemoryStream())
            {
                json.WriteObject(stream, obj);
                string szJson = Encoding.UTF8.GetString(stream.ToArray());
                return szJson;
            }
        }

        /// <summary>
        /// 获取Json的Model
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="szJson"></param>
        /// <returns></returns>
        public static T ParseFromJson<T>(string szJson)
        {
            T obj = Activator.CreateInstance<T>();
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
                return (T)serializer.ReadObject(ms);
            }
        }
    }
}

这里面可以序列化字符串,集合,字典,类型!在此之前需要引用微软内部的System.Runtime.Serialization

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值