要求是获取页面网址,基本上我需要获取页面所在目录的完整URL。
如果是www.domain.com/page.aspx,我需要www.domain.com/,如果是www.domain.com/TestApplication1/Page.aspx,我需要www.domain.com/TestApplication1/
为此我试过了:
Request.Url.DnsSafeHost.ToString()
我之前使用的另一个代码是构建完整的URL:
Dim currenturl = HttpContext.Current.Request.Url
Dim url = String.Format("{0}://{1}{2}", currenturl.Scheme, currenturl.Host, VirtualPathUtility.ToAbsolute("~" + Response.RedirectLocation))
但是有一个问题,如果页面在应用程序中,它们就不能正常工作。
例如,它们适用于www.domain.com/Page.aspx但如果页面地址为www.domain.com/TestApplication1/Page.aspx
,则无法正常工作首先需要www.domain.com/,第二个例子是www.domain.com/TestApplication1 /
请指导如何实现这一目标。
由于
答案 0 :(得分:1)
为什么不从字符串中找到的最后一个/
符号中获取URL并对其进行子串?
答案 1 :(得分:1)
我假设您正在从当前正在执行的Web应用程序的上下文中运行此代码。如果是这种情况,那么这应该可以解决问题:
var pageSegments = Request.CurrentExecutionFilePath.Split('/');
var pageFolder = "/" + string.Join("/", pageSegments.Take(pageSegments.Length - 1)) + "/";
所以给出了
的网址/Test/SomeFolder/Test.aspx
你应该回来
/Test/SomeFolder/
答案 2 :(得分:0)
Uri uri = new Uri(Request.Url.ToString());
string[] segments = uri.Segments;
string result = string.Format("{0}://{1}",uri.Scheme, uri.Host);
segments.ToList().ForEach(s =>
{
if(s!= segments[segments.Length-1])
result += s;
});
您将找到分配给变量result
的预期结果。
答案 3 :(得分:0)
试试这个:
Dim pos As Integer = Request.Url.AbsoluteUri.LastIndexOf("/")
Dim url As String = Request.Url.AbsoluteUri.Substring(0, pos + 1)
答案 4 :(得分:0)
查看HttpRequest.ServerVariables Property以访问IIS Server Variables。您可以利用它来实现您想要做的事情:
string output = string.Empty;
string httpHost = Request.ServerVariables["HTTP_HOST"];
string url = Request.ServerVariables["URL"];
string[] splitUrl = url.Split('/');
for (int i = 0; i < splitUrl.Length -1; i++)
{
if (splitUrl[i].Length > 0)
{
output += string.Format("/{0}", splitUrl[i]);
}
}
string ssl = "http://";
if (Request.ServerVariables["HTTPS"] == "off")
{
ssl = "https://";
}
output = string.Format("{0}{1}{2}/", ssl, httpHost, output);
示例输出:
http://localhost:60454/WebSite1/Folder/
答案 5 :(得分:0)
使用此:
Public Function GetAppUrl() As String
Dim uri As Uri = HttpContext.Current.Request.Url
Dim baseUrl As String = uri.Scheme & "://" & uri.Authority
If baseUrl.EndsWith("/") Then baseUrl = baseUrl.Substring(0, baseUrl.Length - 1)
baseUrl &= HttpContext.Current.Request.ApplicationPath
If Not baseUrl.EndsWith("/") Then baseUrl &= "/"
Return baseUrl
End Function