ashx文件中代码编译进DLL的解决方法,完美

来源:互联网 发布:诗词软件哪个最好 编辑:程序博客网 时间:2024/04/28 09:40
我在网上看到有人说ashx页面发布后代码都在里面,不怎么安全。于是简单百度了下,看到有人把ashx代码放进共享里达到被编译的效果,其实不用这样,这样如果文件一多,管理会很麻烦。ashx的好处不多说,比aspx效率要高。其实要把代码编译进dll,很简单,用到分部类就行

我们首先看看原来的ashx代码

有一个ashx文件名叫做 CheckLogin.ashx,是用来判断登陆的,它的代码文件相应的就是CheckLogin.ashx.cs

我们先看看下面CheckLogin.ashx.cs中的代码(虽然是单独的.cs文件,但是编译后其实还是在ashx文件中)

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Security;using System.Web.SessionState;namespace WebUI.Handler{    /// <summary>    /// CheckLogin 的摘要说明    /// </summary>    public  class CheckLogin : IHttpHandler    {            private void AddUserOnLine(HttpContext context)        {            context.Response.ContentType = "text/plain";        }        //内部处理程序云云....        public bool IsReusable        {            get            {                return false;            }        }    }          


用这样的方式写,编译网站后代码全在ashx文件里,记事本一打开全看见了。

 

于是来个小小改动,看下面 

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Security;using System.Web.SessionState;namespace WebUI.Handler{    ///     /// CheckLogin 的摘要说明    ///     public  partial  class CheckLogin : IHttpHandler        {        注意上面用到了partial关键字,而这里的代码全剪切到新建的类里了,这边留空就行   }}


加了 partial ,表示这是分部类。

然后再新建一个同名的类文件,CheckLogin.cs ,其中using全照搬,反正里面结构完全一样,要处理的逻辑写这里就行。

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Security;using System.Web.SessionState;namespace WebUI.Handler{    public partial class CheckLogin    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";                    }//这里也用到了partial关键字,表示这个类是CheckLogin的一部分,然后写你的业务逻辑吧,这边的代码会被编译进dll中。        public bool IsReusable        {            get            {                return false;            }        }    }}


代码写新建类文件中,搞定,编译看看,ashx文件中没东西啦!全进dll了。

编译完成之后我们打开CheckLogin.ashx文件看到,里面就一行,大小1KB,完美

<%@WebHandler Language="C#" CodeBehind="CheckLogin.ashx.cs" Class="WebUI.Handler.CheckLogin"%>
//除了这行,其他什么都没了。
原创粉丝点击