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