URLの現在のページを除くURLのすべてのパスを取得したい。たとえば、私のURLは http://www.MyIpAddress.com/red/green/default.aspx 取得したい" http://www.MyIpAddress.com/red/green/ "のみ。どうやって手に入れられますか
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, ""));
SPathとしての新しいSystem.IO.FileInfo(sPath)の例外には、「指定されたパスの形式はサポートされていません」という「localhost/red/green/default.aspx」が含まれています。
URIの問題としてではなく、文字列の問題として扱います。その後、それは素敵で簡単です。
String originalPath = new Uri(HttpContext.Current.Request.Url.AbsoluteUri).OriginalString;
String parentDirectory = originalPath.Substring(0, originalPath.LastIndexOf("/"));
本当に簡単です!
欠落している括弧を追加するように編集されました。
メインURL: http:// localhost:8080/mysite/page.aspx?p1 = 1&p2 = 2
C#でURLのさまざまな部分を取得します。
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
これを置き換える:
string sRet = oInfo.Name;
Response.Write(sPath.Replace(sRet, ""));
次の場合:
string sRet = oInfo.Name;
int lastindex = sRet.LastIndexOf("/");
sRet=sRet.Substring(0,lastindex)
Response.Write(sPath.Replace(sRet, ""));
これを使って
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, ""));
これにより、サイト上の別のページに移動しようとしているだけで欲しい場合がありますが、本当に必要な場合は絶対パスを取得できません。絶対パスを使用せずにサイト内を移動できます。
string loc = "";
loc = HttpContext.Current.Request.ApplicationPath + "/NewDestinationPage.aspx";
Response.Redirect(loc, true);
絶対パスが本当に必要な場合は、パーツを選択して、Uriクラスで必要なものを構築できます。
Uri myUri = new Uri(HttpContext.Current.Request.Url.AbsoluteUri)
myUri.Scheme
myUri.Host // or DnsSafeHost
myUri.Port
myUri.GetLeftPart(UriPartial.Authority) // etc.
良い記事 ASP.NETパスの件名について。