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".
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.
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
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, ""));
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, ""));
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.