使用global.asax重写URLS

时间:2012-04-02 09:53:51

标签: asp.net vb.net url-rewriting

我正在尝试在我的vb.net(.net 4)项目中进行一些友好工作,并且我正在尝试使用我读到的有关global.asax和Application_Beginrequest的内容,但我无法进行编译。

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim httpContext As System.Web.HttpContext = httpContext.Current
    Dim currentURL As String = currentURL.Request.Path.ToLower()
    If currentURL.IndexOf("widgets") > 0 Then
        objHttpContext.RewritePath("products.aspx?ID=123")
    Else
        objHttpContext.RewritePath(httpContext)
    End If
End Sub

上面是我正在尝试但它在objHttpContext上出错。有另一种方法吗?理想情况下,一旦我使上述方法工作,我将尝试使用数据库调用来计算URL。所以在这方面的任何建议也将非常受欢迎。我正试图摆脱不得不在IIS上安装任何东西,因为它是一个负载效率的环境,我宁愿不在每台服务器上安装一些东西。

由于

汤姆

2 个答案:

答案 0 :(得分:7)

您应该访问HttpApplication.Context。我是这样做的(C#):

string reqPath = Request.Url.AbsolutePath;
if(reqPath=="/")
    newPath="/Pages/PL/Main.aspx";
if (newPath != "")
    HttpApplication.Context.RewritePath(newPath);

正如我在文档中看到的那样,您应该能够使用完全相同的语法来访问VB.NET中的上下文。

如果你真的想要,你也可以使用II7 url rewrite模块。

答案 1 :(得分:1)

为什么要使用重写,当你使用asp.net路由可以很容易地做到这一点?

请查看以下链接以获取更多信息: http://msdn.microsoft.com/en-us/library/cc668201.aspx