0

要件は、ページの URL を取得することです。基本的に、ページがあるディレクトリの完全な 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/ が必要で、2 番目の例では www.domain.com/TestApplication1/ が必要です

これを達成する方法を教えてください。

ありがとう

4

6 に答える 6

1

URL を取得して、文字列で/見つかった最後の記号から部分文字列を作成してみませんか?

于 2012-10-23T21:42:09.743 に答える
1

現在実行中の Web アプリケーションのコンテキストからこのコードを実行していると仮定しています。その場合、これでうまくいくはずです:

var pageSegments = Request.CurrentExecutionFilePath.Split('/');

var pageFolder = "/" + string.Join("/", pageSegments.Take(pageSegments.Length - 1)) + "/";

したがって、次のURLが与えられます

/Test/SomeFolder/Test.aspx

あなたは戻ってくるべきです

/Test/SomeFolder/
于 2012-10-23T21:42:23.953 に答える
0

これを試して:

    Dim pos As Integer = Request.Url.AbsoluteUri.LastIndexOf("/")
    Dim url As String = Request.Url.AbsoluteUri.Substring(0, pos + 1)
于 2012-10-23T22:15:15.997 に答える
0

HttpRequest.ServerVariables プロパティを調べて、IIS サーバー変数にアクセスします。それを利用して、やろうとしていることを達成できます。

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/
于 2012-10-24T01:25:20.300 に答える
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
于 2012-10-25T10:41:07.003 に答える
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;
                             });

variable に割り当てられた期待される結果が見つかりますresult

于 2012-10-23T21:57:54.130 に答える