2011-03-31 47 views
1

我有一个Global.ascx,我写了一个简单的URL作家模块:如何使用Global.asax并为其实现处理程序?

void Application_BeginRequest(object sender, EventArgs e) 
{ 
    try 
    { 
     string strPath = Context.Request.Url.AbsoluteUri; 
     string[] sections = strPath.Split('/'); 
     int len = sections.Length; 
     string strExtention = sections[len - 1].Split('.')[1]; 
     if (strExtention.ToLower().TrimEnd().Equals("xml")) 
     { 
      if (sections[len - 2].Equals("ATM")) 
       Context.RewritePath("~/Include/XML Files/Orders/TMP/" + sections[len - 1]); 
      else 
       Context.RewritePath("~/Include/XML Files/Orders/" + sections[len - 1]); 
     } 
    } 
    catch 
    { 
    } 
} 

它的工作原理,但本地其在宿主这么想的工作,我如何能实现处理程序呢?

Server.Transfer也不起作用。

回答

1

你是正确的沿着模块的路线。然而,不是Context.RewritePath()使用Response.Redirect(),这只是简单地返回一个3xx消息给浏览器,它将请求重定向到新的URL。无论它在哪里实施,都应该可以工作。

+0

但是如果我使用重定向而不是重写大家会很容易找到我的原始路径,我不喜欢它 – kamiar3001 2011-03-31 11:35:08

+0

在这种情况下,使用'Server.Tranfer()'这会将执行转移到另一个页面(保留旧的URL显示)但是我不知道这将如何反应在模块方面 – 2011-03-31 11:41:57

+0

它不起作用 – kamiar3001 2011-04-03 06:55:22

相关问题