IHttpHandler使用范例

一。 使用IHttpHandler防止非法链接

由于资源的限制与保护,现在很多网站都启用了防盗链机制,在ASP.NET实现防盗链其实很轻松,
我写了一个防盗链的IHttpHandler( 源码),本人也是新手,希望更位前辈多多指教.
以下是实现步骤:
1.在将生成的 eWebapp.NoLink.dll文件拷贝到网站Bin目录.
2.在Web.config 里配置

< httpHandlers >
    
< add verb = " * "  path = " *.过滤的文件格式 "   type = " eWebapp.NoLink.IHandler,eWebapp.NoLink " />
httpHandlers >

也可以有Path中配置多种文件格式的过滤,格式如(path="*.jpg,*.bmp,*,exe")
3.在IIS里增加一个应用程序扩展。在“默认网站”->“属性”->“主目录”->“配置”。在弹出的“应用程序配置”窗口里按“添加”,在弹出的“添加/编辑应用程序扩展名映射”窗口里“可执行文件”选择C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/aspnet_isapi.dll,在扩展名里输入“.过滤的文件格式”,然后确定即可。
4.测试吧


------------------------------------------------------
二。以下是一个url重向的例子


web.config中:


     < httpHandlers >
      
< add verb = " * "  path = " *.tab.aspx "  type = " Portal.TabHttpHandler, Portal "   />
    
httpHandlers >   


相关的类文件:

using  System;
using  System.Collections;
using  System.Web;
using  System.Web.UI;
using  System.Web.Handlers;
using  System.Web.SessionState;

namespace  Portal
{
    
/// 
    
/// Summary description for TabHttpHandler.
    
/// 

    public class TabHttpHandler : IHttpHandler, IRequiresSessionState
    
{
        
public void ProcessRequest(HttpContext context) 
        
{
            
string path = context.Request.Url.AbsolutePath.ToLower();
            
string tabRef = path.Substring(path.LastIndexOf("/"+ 1); // get "TabRef.tab"
            tabRef = tabRef.Substring(0, tabRef.LastIndexOf(".tab.aspx")); // get "TabRef"

            Hashtable r 
= new Hashtable();
            
foreach(string key in context.Request.QueryString.Keys)
            
{
                r[key] 
= context.Request[key];
            }


            r[
"TabRef"= tabRef;

            
string url = Portal.API.Config.GetMainPage();
            
bool firstParam = true;
            
foreach(DictionaryEntry e in r)
            
{
                
if(firstParam)
                
{
                    url 
+= "?";
                    firstParam 
= false;
                }

                
else
                
{
                    url 
+= "&";
                }

                url 
+= e.Key.ToString() + "=" + e.Value.ToString();
            }

            context.Server.Transfer(url);
        }

        
        
public bool IsReusable
        
{
            
get
            
{
                
return true;
            }

        }

    }

}

 

你可能感兴趣的:(asp.net)