Comment obtenir le chemin D'URL en C#

je veux obtenir tous les le chemin de l'URL à l'exception de la page de l'url, par exemple: mon URL est http://www.MyIpAddress.com/red/green/default.aspx je veux obtenir "http://www.MyIpAddress.com/red/green/" seulement. Comment puis-je obtenir.Je suis en train de faire comme

string sPath = new Uri(HttpContext.Current.Request.Url.AbsoluteUri).OriginalString; System.Web.HttpContext.Current.Request.Url.AbsolutePath;
            sPath = sPath.Replace("http://", "");
            System.IO.FileInfo oInfo = new System.IO.FileInfo(sPath);
            string sRet = oInfo.Name;
            Response.Write(sPath.Replace(sRet, ""));

Son montrant exception sur le nouveau Système.IO.FileInfo(sPath) sPath contenir "localhost/rouge/vert/par défaut.aspx "saying" le format du chemin donné n'est pas supporté."

14
demandé sur Nomi Ali 2013-11-02 10:58:10

5 réponses

ne le traitez pas comme un problème URI, traitez-le comme un problème de chaîne. Ensuite, il est agréable et facile.

String originalPath = new Uri(HttpContext.Current.Request.Url.AbsoluteUri).OriginalString;
String parentDirectory = originalPath.Substring(0, originalPath.LastIndexOf("/"));

est Vraiment facile!

modifié pour ajouter les parenthèses manquantes.

11
répondu jwa 2016-02-18 12:48:56

Main URL:

Obtenir les différentes parties de l'URL en C#.

Value of HttpContext.Current.Request.Url.Host
localhost

Value of HttpContext.Current.Request.Url.Authority
localhost:8080

Value of HttpContext.Current.Request.Url.AbsolutePath
/mysite/page.aspx

Value of HttpContext.Current.Request.ApplicationPath
/mysite

Value of HttpContext.Current.Request.Url.AbsoluteUri
http://localhost:8080/mysite/page.aspx?p1=1&p2=2

Value of HttpContext.Current.Request.RawUrl
/mysite/page.aspx?p1=1&p2=2

Value of HttpContext.Current.Request.Url.PathAndQuery
/mysite/page.aspx?p1=1&p2=2
61
répondu Shibu Thomas 2016-02-04 06:38:31

remplacez ceci:

            string sRet = oInfo.Name;
            Response.Write(sPath.Replace(sRet, ""));

Avec le code suivant:

        string sRet = oInfo.Name;           
        int lastindex = sRet.LastIndexOf("/");
        sRet=sRet.Substring(0,lastindex)
        Response.Write(sPath.Replace(sRet, ""));
3
répondu Sudhakar Tillapudi 2013-11-02 07:05:29

utiliser ce

string sPath = (HttpContext.Current.Request.Url).ToString();
sPath = sPath.Replace("http://", "");
var oInfo = new  System.IO.FileInfo(HttpContext.Current.Request.RawUrl);
string sRet = oInfo.Name;
Response.Write(sPath.Replace(sRet, ""));
2
répondu Ratna 2017-04-25 21:28:47

cela peut vous donner envie que vous voulez si vous essayez juste de naviguer vers une autre page sur votre site, mais il n'obtient pas le chemin absolu si vous avez vraiment besoin de cela. Vous pouvez naviguer à l'intérieur du site sans utiliser le chemin absolu.

string loc = "";
loc = HttpContext.Current.Request.ApplicationPath + "/NewDestinationPage.aspx";
Response.Redirect(loc, true);

si vous avez vraiment besoin du chemin absolu, vous pouvez choisir les pièces et construire ce dont vous avez besoin avec la classe Uri:

Uri myUri = new Uri(HttpContext.Current.Request.Url.AbsoluteUri)
myUri.Scheme
myUri.Host  // or DnsSafeHost
myUri.Port
myUri.GetLeftPart(UriPartial.Authority)  // etc.

bon article au sujet de ASP.NET des chemins.

0
répondu B H 2014-08-28 12:50:08