'Global.asax
    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        '在应用程序启动时运行的代码
        Dim RequestUrl As String = HttpContext.Current.Request.RawUrl
        Dim VisualUrl As String = "^(.+)Action/(\d+)\.aspx(\?.*)*$"
        Dim RealUrl As String = "$1default.aspx?action=$2"
        
        If Regex.IsMatch(RequestUrl, VisualUrl, RegexOptions.IgnoreCase Or RegexOptions.Compiled) Then
            Dim NewUrl As String = Regex.Replace(RequestUrl, VisualUrl, RealUrl, RegexOptions.Compiled Or RegexOptions.IgnoreCase)
            Context.RewritePath(NewUrl)
        End If
    End Sub'default.aspx
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.SecurityPartial Class _Default
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Request.QueryString("action") <> Nothing Then
            Response.Write(Request.QueryString("action").ToString())
        End If    End Sub
End Class这样写好后第一次提交http://127.0.0.1/Action/1187.aspx
能打出1187   接着刷新就变成了无法找到资源。
太郁闷了

解决方案 »

  1.   

    当然,Application_Start只在程序被启动的时候执行,之后不会被执行了。用asp.net 3.5的web.routing的模块来做吧。
      

  2.   

    晕,问题是只有2。0的环境,而且没有IIS控制权(虚拟主机)
      

  3.   

    用自定义IHttpModule实现URL重写
    在本人拙作《ASP.NET夜话》第十二章中探讨过ASP.NET底层运行机制的问题,在该书中本人也讲到过了解一些ASP.NET的低层机制对于我们灵活控制ASP.NET有很大帮助,在该书中本人讲述过如何用自定义的IHttpHandler来实现防盗链功能,由于篇幅限制在该书中没有讲述自定自定义IHttpModule可以实现什么样的效果,在本篇将讲述利用自定义IHttpModule来实现URL地址重写。 
      

  4.   

    如果你不想搞那么复杂,不妨直接将你的code写到global.ascx里面的Application_BeginRequest方法里面,就解决了...
      

  5.   

    你这个代码明显是错的
     Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
            '在应用程序启动时运行的代码
            Dim RequestUrl As String = HttpContext.Current.Request.RawUrl在 Application_Start的时候不会有HTTP上下文也就是HttpContext.Current.Request为Nullhttpcontext直到用户请求的时候
    如Begin_Request之后才会有httpcontext
      

  6.   


    那第一次请求为什么会有结果呢?PS:IHttpModule 是。NET2。0的内置接口吗?
      

  7.   

    如果说你这个iis响应你的请求而启动那么你的代码还是有可能的,机会性的可能
    http://msdn.microsoft.com/zh-cn/library/system.web.httpcontext(VS.80).aspx
    HttpContext 类封装有关个别 HTTP 请求的所有 HTTP 特定的信息。建议你了解一下asp.net的global.asax的相关事件管道说明与httpcontext的相关信息再来进行编码.