2016-11-20 3 views
1

나는 파일 역할을하는 동작이 있습니다파일 파일 결과를 찾을 수 없습니다

public ActionResult() GetFile 
{ 
    return this.File("C:\\test.txt", "text/plain", 
       "test.txt"); 
} 

을하지만 작업이 오류가 발생합니다

FileNotFoundException: Could not find file: C:\test.txt Microsoft.AspNetCore.Mvc.Internal.VirtualFileResultExecutor+d__4.MoveNext()

내가 파일 exstis이 확신 - 그것이를 통해 열 수를 "실행"창 (Win + R). Asp.net 핵심 mvc가 파일을 "확인"하지 않는 이유는 무엇입니까? 당신이 볼 수 있듯이

public virtual VirtualFileResult File(string virtualPath, string contentType) 

, 매개 변수의 이름이 virtualPath입니다 :로

답변

4

string을 허용 File() 과부하, 정의된다. 즉, 실제 경로가 아닌 가상 경로를 파일에 전달해야 함을 의미합니다.

는 (가상 경로는 현재 응용 프로그램에 상대적인 경로를 의미한다 예를 들면 :.. ~ 응용 프로그램 루트 디렉토리를 의미 ~/Content/test.txt)

당신이 위에 실제 파일 봉사에 대한 주장이라면 응용 프로그램 루트, 당신은 그것을 사전에 읽고 해당 File() 과부하 실제 바이트를 전달할 수 있습니다

var physicalFilePath = "C:\\test.txt"; 
var fileBytes = System.IO.File.ReadAllBytes(physicalFilePath); 

return this.File(fileBytes, "text/plain", "test.txt"); 

업데이트 :

실제로 기본 컨트롤러 을 사용하여 실제 경로를 사용하여 파일을 제공하는 데 사용할 수있는 PhysicalFile() 방법을 제공합니다. 귀하의 경우 :

return PhysicalFile("C:\\test.txt", "text/plain", "test.txt"); 

당신은 또한 (보통) 응용 프로그램이 실행이 충분할 권한이없는 것이다 아래 프로세스가 C:\의 루트에서 읽을 수 있음을 유의하십시오.

Source

+0

감사를 참조 - PhysicalFile 내가 찾고 있었던 것입니다. 어쨌든 - 이상한 예외. 더 많은 의미 - 전체 메시지 (f. 주어진 경로는 가상이 아닙니다.)) 도움이 될 수 있습니다 :) – pwas

관련 문제