我正在尝试在我的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上安装任何东西,因为它是一个负载效率的环境,我宁愿不在每台服务器上安装一些东西。
由于
汤姆
答案 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