从另一个页面的代码后台获得ASP.Net页面的URL

5

我正在尝试找到一种方法来确定页面对象的URL。看起来你只能获取当前上下文的路径。

4个回答

2
一张网页可以有多个URL。例如,我在家里运行了一个服务器,该站点的URL因检查位置而异。当我在家时,我只使用内部服务器名称,以便流量永远不会离开我的家庭网络。当我在其他地方时,我必须使用基于dyndns.org的URL。我还可以配置几个不同的站点,都指向同一个位置。关键是,这些信息与您页面的类类型或特定实例无关。

因此,每个请求都可以确定页面的URL,确实可以通过查看Request.Url来获取它。

每个请求的问题是我的问题。我总是可以在上下文中获取它,但我只想获取脚本路径,无论是虚拟的(对于Web)还是物理的(在磁盘上)。实际上,我不需要完整的URL,只需要目录和脚本位置。 - Proviance
我的建议是将该路径作为参数添加到需要它的任何函数中,并更改调用方式。 - Joel Coehoorn
嗯...我收回其中的一部分。它是按会话而不是按请求计费的。然而,所涉及的逻辑(和提出的解决方案)仍然适用。 - Joel Coehoorn

1
希望这些内容中有一个能帮到您。 ASP.NET的路径理解 表达式 - 评估
this.TemplateSourceDirectory - /informit/subdir Request.MapPath("log.txt") - c:\mywebdirs\informit\subdir\log.txt
this.MapPathSecure("log.txt") - c:\mywebdirs\informit\subdir\log.txt
Request.Path - /informit/subdir/pathsample.aspx/extra
Request.FilePath - /informit/subdir/pathsample.aspx
Request.CurrentExecutionFilePath - /informit/subdir/pathsample.aspx
Request.PathInfo - /extra
Request.PhysicalPath - c:\mywebdirs\informit\subdir\pathsample.aspx
Request.PhysicalApplicationPath - c:\mywebdirs\informit\
Request.ApplicationPath - /informit
Request.Url - http://localhost/informit/subdir/client.aspx/extra

Request.RawUrl - /informit/subdir/pathsample.aspx/extra

Response.ApplyAppPathModifier("foo.aspx") - /informit/subdir/foo.aspx

this.ResolveUrl("~/client.aspx") - /informit/pathsample.aspx


0
如果您正在查找的页面与当前页面位于同一目录或其子目录中,则可以使用以下内容(根据需要将子目录页面添加到字符串中):
string targetUrl =  HttpContext.Current.Request.Url.Scheme
                 + "://"
                 + HttpContext.Current.Request.Url.Authority
                 + this.TemplateSourceDirectory + "/Page.aspx";

0

它应该通过以下方式可用:

string currentUrl = Page.Request.Url.ToString();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接