前两天 领导让改了一个控件,就是 百度编辑器的 前台处理和后台处理分开,简单的说,是把 .ashx的页面单独编译成dll ,
前后想了想,.ashx文件又没有cs代码,怎么能编译?尝试了几次没能成功,后来用了这么一个办法,问题成功解决!
思路:通过 httpHandlers 自定义 http 访问时做的处理,当前台的JS 访问到 .ashx文件时,我就把他指向一个类去处理,类可以编译成dll ,所有问题就解决了。
具体代码: config 配置
<system.web>
<httpHandlers>
<add verb="*" path="imageUp.ashx" type="UploadLyp.net.imageUp,UploadLyp" validate="false"/>
<add verb="*" path="fileUp.ashx" type="UploadLyp.net.fileUp,UploadLyp" validate="false"/>
<add verb="*" path="getContent.ashx" type="UploadLyp.net.getContent,UploadLyp" validate="false"/>
<add verb="*" path="getMovie.ashx" type="UploadLyp.net.getMovie,UploadLyp" validate="false"/>
<add verb="*" path="getRemoteImage.ashx" type="UploadLyp.net.getRemoteImage,UploadLyp" validate="false"/>
<add verb="*" path="imageManager.ashx" type="UploadLyp.net.imageManager,UploadLyp" validate="false"/>
<add verb="*" path="scrawlUp.ashx" type="UploadLyp.net.scrawlUp,UploadLyp" validate="false"/>
</httpHandlers>
<system.web>
简单解释一下,verb="*" 是任何的 访问请求
path="imageUp.ashx" 这是具体访问的 类型,也可以是 *.jpg,*.rar
type="UploadLyp.net.getRemoteImage,(这里有逗号)UploadLyp" // 逗号前是 命名空间+类名字,逗号以后是 编译成的 dll 名称
validate="false"// 这个我也不是很清楚,应该是不验证的意思
配置好以后,我们就可以写类了,把 。ashx要处理的逻辑全都放在 类里面去执行,但是类里必须要继承一个类 IHttpHandler ,要有 public void ProcessRequest(HttpContext context){}
和 public bool IsReusable
{
get
{
return false;
}
}
这样就可以处理你的逻辑了