web-dev-qa-db-fra.com

Comment obtenir le chemin de l'URL en C #

Je veux obtenir tout le chemin de l'URL sauf la page actuelle 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/ "uniquement. Comment puis-je obtenir.Je fais 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 exception sur les nouvelles System.IO.FileInfo (sPath) en tant que sPath contient "localhost/red/green/default.aspx" et indique "Le format du chemin d'accès donné n'est pas pris en charge".

15
Nomi Ali

Ne le traitez pas comme un problème d'URI, traitez-le comme un problème de chaîne. Alors c'est gentil et facile.

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

C'est aussi simple que ça!

Édité pour ajouter des parenthèses manquantes.

11
jwa

URL principale: http: // localhost: 8080/mysite/page.aspx? P1 = 1 & p2 = 2

Récupère 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
65
Shibu Thomas

Remplacez ceci:

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

Avec ce qui suit:

        string sRet = oInfo.Name;           
        int lastindex = sRet.LastIndexOf("/");
        sRet=sRet.Substring(0,lastindex)
        Response.Write(sPath.Replace(sRet, ""));
3

utilisez ceci

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
Ratna

Vous pouvez obtenir ce que vous voulez si vous essayez simplement de naviguer vers une autre page de votre site, mais le chemin absolu n’est pas obtenu si vous en avez vraiment besoin. Vous pouvez naviguer dans le 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 sur le sujet des chemins ASP.NET.

0
B H