5

我有一个 ASP.NET MVC 3 应用程序,我必须将扩展名为 .aspx 的请求映射到另一个路由。我想要做的是在应用程序启动中获取当前请求 url。但问题是它在所有没有 .aspx 扩展名的 url 上运行良好,但在 ex 的 url 中(http://example.com/Products/5/16/Eettafels.aspx)它只显示http://example.com/

但是使用http://example.com/Products/5/16/Eettafels它显示了正确的路径..

所有代码都是简单的一行:

string currentUrl = HttpContext.Current.Request.Url.ToString().ToLower();

谁能知道我做错了什么

4

2 回答 2

14

虽然这是一个非常古老的帖子。

我只是粘贴 Ha Doan 链接的代码,以便任何人更容易解决这个问题。

string url = HttpContext.Current.Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx

string path = HttpContext.Current.Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx

string host = HttpContext.Current.Request.Url.Host;
// localhost

检查此 SO 以讨论此问题

于 2016-10-31T04:51:17.390 回答
0

如今,您可以覆盖在调用任何 Action 之前执行的 Controller 方法。然后我建议您保留当前的 ​​Url,例如在 ViewBag 或 TempData 中建议的@Ifitkhar,以防您打算重定向,然后在稍后要返回的 Action 中使用它。

public class ProductsController
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext){
        TempData["previousUrl"] = HttpContext.Current.Request.Url.AbsoluteUri;
        base.OnActionExecuting(filterContext);
    }
}
于 2017-11-23T11:31:54.797 回答