sourcetip

URL의 As.Net 절대 경로

fileupload 2023. 8. 6. 10:17
반응형

URL의 As.Net 절대 경로

웹 앱이 다른 서버의 다른 앱과 파일을 더 쉽게 공유할 수 있도록 마스터 페이지에서 기본 href 태그를 사용하고 있습니다.많은 사람들이 발견했듯이, 이것은 웹 양식 경로를 파괴합니다.저는 워킹 폼 어댑터 클래스가 있지만 url의 절대 경로를 어떻게 얻을 수 있는지 잘 모르겠습니다.현재 내 프로그램은 다음과 유사한 것을 사용하도록 하드 코딩되어 있습니다.

HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;

현재 로컬 IIS 서버에서 테스트 중이므로 절대 경로에 도메인 이름이 포함되지 않은 항목(로컬 IIS가 외부에 표시되지 않음)을 사용하려고 시도한 많은 항목에 대한 이상한 경향이 있습니다.그 말은 그것이 절대적인 경로가 아니라는 것을 의미하며, 따라서 기본 href가 그것을 파괴할 것입니다.

하드 코딩 없이 로컬에서 작동하지만 서버에 업로드할 때도 제대로 작동하는 좋은 방법이 있습니까?서버 측 복사본에서 다른 작업을 수행하는 것은 피하고 싶습니다.

예, 이 정보를 얻기 위해 로컬 및 서버에서 별도의 web.config 파일을 사용할 수 있다는 것을 알고 있습니다. 하지만 이것은 보기 흉하고 DRY입니다.

과거에 사용한 적이 있습니다.

// Gets the base url in the following format: 
// "http(s)://domain(:port)/AppPath"
HttpContext.Current.Request.Url.Scheme 
    + "://"
    + HttpContext.Current.Request.Url.Authority 
    + HttpContext.Current.Request.ApplicationPath;

오래된 게시물이지만 약간 덜 장황한 다른 방법이 있습니다.

var baseUri = new Uri(HttpContext.Current.Request.Url, "/");

문자열 보간 사용:

string redirectUri = $"{this.Request.Url.Scheme}://{this.Request.Url.Authority}{this.Request.ApplicationPath}account/signedout";

'httpContext' 또는 'httpContext' 대신 'this'를 사용합니다.상황에 따라 '현재'입니다.

나는 다음을 사용해 왔고 그것은 나에게 클라이언트와 서버 모두에 효과가 있었습니다.

string surl = string.Format("{0}://{1}",
    HttpContext.Current.Request.Url.Scheme,
    HttpContext.Current.Request.Url.Authority);

코드:

string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];

언급URL : https://stackoverflow.com/questions/567590/asp-net-absolute-path-of-a-url

반응형