快速查找ASP.NET产生的临时文件

本文介绍了两种在ASP.NET应用程序中定位临时文件的方法,一种是在Page_Load方法中输出临时文件的位置,另一种是通过自定义IHttpHandlerFactory实现。

我们知道,ASP.NET 页面请求的处理过程需要使用一些临时文件,这些文件对我们分析页面程序逻辑,有很大的帮助。下边我就说两种方法:

第一种,在页面的Page_Load方法中加入

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write(
this.GetType().Assembly.Location);
}

会输出类似于下面的字符串:

C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/website13/63ed8704/93b8f11b/App_Web_rixp4_rs.dll

我们去掉最后的App_Web_rixp4_rs.dll字符,将剩下的字符串复制到“运行”窗口,打开相应的文件夹。

我们以default.aspx页面为例,在打开的文件夹中找到类似于这样的文件default2.aspx.cdcab7d2.compiled。

我们打开这个文件,会看到类似于下面的内容:

<?xml version="1.0" encoding="utf-8"?>
<preserve resultType="3" virtualPath="/WebSite13/Default.aspx" hash="73ae13447" filehash="ffffe207cb3bfc04" flags="110000" assembly="App_Web_rixp4_rs" type="ASP.default_aspx">
    
<filedeps>
        
<filedep name="/WebSite13/Default.aspx" />
    
</filedeps>
</preserve>

在打开的文件中,我们找到assembly="App_Web_rixp4_rs",在刚才打开的文件中找以App_Web_rixp4_rs开头的类文件。这些文件就是我们需要的临时文件。

 

第二种,我们写一个继承IHttpHandlerFactory接口的文件

public class HttpHandlerFactory : IHttpHandlerFactory
{
    
public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
    
{
        
//得到编译实例(通过反射)
        PageHandlerFactory factory = (PageHandlerFactory)Activator.CreateInstance(typeof(PageHandlerFactory), true);
        IHttpHandler handler 
= factory.GetHandler(context, requestType, url, pathTranslated);

        ResponseAssemblyLocation(context, handler);

        
//返回
        return handler;
    }


    
public virtual void ReleaseHandler(IHttpHandler handler)
    
{
    }


    [Conditional(
"DEBUG")]
    
private void ResponseAssemblyLocation(HttpContext context, IHttpHandler handler)
    
{
        context.Response.Write(handler.GetType().Assembly.Location);
    }

}


然后在web.config进行配置一下:

    <httpHandlers>
      
<add verb="*" path="*.aspx" validate="false" type="HttpHandlerFactory"/>
    
</httpHandlers>
        
<compilation debug="true"/>

在debug="true"的情况下,类HttpHandlerFactory中的ResponseAssemblyLocation方法就能执行,反之,不执行。
需要说明的一点是,我生成的类文件HttpHandlerFactory在网站的App_Code目录,故web.config文件中的type节未配置Assembly名称。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值