IT story

Microsoft Web API : Server.MapPath를 어떻게 수행합니까?

hot-time 2020. 4. 17. 08:25
반응형

Microsoft Web API : Server.MapPath를 어떻게 수행합니까?


이후 마이크로 소프트 웹 API가 아닌 MVC , 당신은 이런 식으로 뭔가를 할 수 없습니다

var a = Request.MapPath("~");

이건

var b = Server.MapPath("~");

System.Web네임 스페이스가 아닌 네임 스페이스 아래에 있기 때문 System.Web.Http입니다.

그렇다면 Web API 에서 상대 서버 경로를 어떻게 알 수 있습니까?
나는 MVC 에서 이와 같은 일을했다 .

var myFile = Request.MapPath("~/Content/pics/" + filename);

디스크의 절대 경로를 알려줄 것입니다.

"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"

HostingEnvironment.MapPath사용할 수 없는 컨텍스트 (예 : 정적 메서드) System.Web와 같은 컨텍스트에서 사용할 수 있습니다 HttpContext.Current.

var mappedPath = System.Web.Hosting.HostingEnvironment.MapPath("~/SomePath");

Server.MapPath와 HostingEnvironment.MapPath의 차이점은 무엇입니까?를 참조하십시오 .


string root = HttpContext.Current.Server.MapPath("~/App_Data");

이 문제를 우연히 해결하는 사람들을 제외하고 HostingEnvironment 호출을 사용하여 테스트 수준을 실행하는 좋은 방법은 ~ / example /에 매핑 된 UNC 공유에 액세스하는 경우입니다. IIS-Express 문제 :

#if DEBUG
    var fs = new FileStream(@"\\example\file",FileMode.Open, FileAccess.Read);
#else
    var fs = new FileStream(HostingEnvironment.MapPath("~/example/file"), FileMode.Open, FileAccess.Read);
#endif

파일에서 로컬로 테스트 할 권한이 있지만 프로덕션 환경에서 한 번 env 매핑이 필요한 경우 도움이됩니다.


나는 당신이 제공 한 상황에서 말할 수 있지만, 당신은 단지 응용 프로그램 시작시 할 필요가 그것의 어떤 경우에, 당신은 여전히 사용할 수 있습니다 Server.MapPathWebApiHttpApplication; 예; Application_Start().

나는 당신의 직접적인 질문에 대답하고 있습니다. 이미 언급 한 HostingEnvironment.MapPath()것이 아마도 선호되는 솔루션 일 것입니다.


이후 Server.MapPath()웹 API 광고 (비누 또는 REST) 내에 존재하지 않습니다, 당신은 웹 서버의 상황에 홈 디렉토리에 로컬 - 상대적인을 표시해야합니다. 가장 쉬운 방법은 다음과 같습니다.

string AppContext.BaseDirectory { get;}

그런 다음 이것을 사용하여 경로를 연결하여 상대 경로를 파일에 매핑 할 수 있습니다.
참고 : 문자열 경로는 mvc \와 같지 않습니다 /.

전의:

System.IO.File.Exists($"{**AppContext.BaseDirectory**}\\\\Content\\\\pics\\\\{filename}");

이것이 당신의 예제에서 사운드 경로라는 사실을 리턴합니다.


선택한 답변이 Web API 응용 프로그램에서 작동하지 않았습니다. 나는 사용해야했다

System.Web.HttpRuntime.AppDomainAppPath

당신은 다음과 같이 시도 할 수 있습니다 :

var path = "~ / Image / test.png"; System.Web.Hosting.HostingEnvironment.MapPath (@ + 경로)

참고 URL : https://stackoverflow.com/questions/16557122/microsoft-web-api-how-do-you-do-a-server-mappath

반응형