ASP.NET MVC로 작업하는 경우 HTTPHandler
이 필요한 이유는 Action
메서드를 사용하여 파일 내용을 처리하는 것입니다. 액션 메소드에서 HttpHandler
으로 수행하는 대부분의 작업을 수행 할 수 있습니다. http://domainname.com/content/abc
은 abc.pdf 파일을 반환 할 수 있습니다.
브라우저가 리소스 (PDF)에 직접 액세스하도록 허용하면 안됩니다. 대신 action
메소드를 통해 액세스 권한을 부여합니다. 요청에서 조치 메소드의 파일 ID/이름을 읽고 파일을 읽고 출력하십시오. 당신이 아래와 같은 작업 방법을 가지고 있다고 가정하여 ResourceController
public ActionResult GetFile(string id)
{
string fullFilePath=somefullpathvariable+"//"+id+".pdf";
return File(fullFilePath, "application/pdf", Server.UrlEncode(id+".pdf"));
}
이제 사용자가 액세스 할 수있는이 같은
http://www.yourdomain.com/Resource/awesomemvc
이제이 서버에 저장되어있는 위치에서 awesomemvc.pdf
라는 파일을 반환 할 수 있으며, someFullPathVariable
은 해당 위치의 경로를 보유합니다.
처음에는 mvc 라우팅 솔루션만을 선택했습니다. 하지만 !!, 내 URL "http://www.domainname.com/Content/PDF/ABC.pdf"가 직접 실행되고 정의 된 경로를 지키지 않습니다. routes.RouteExistingFiles = true;routes.MapRoute ("PDFRoute", "Content/PDF/{id}", 새 {컨트롤러 = "사용자", 동작 = "GetPdf", id = UrlParameter.Optional}); – shakti
@shakti : 액션 메서드를 통해 노출하는 경우이를 통해 이동합니다. 내 업데이트 답변을 참조하십시오. – Shyju
내 요구 사항을 이해하십시오. Google 검색에서 내 애플리케이션 URL이 표시됩니다. 그 URL은 로그인 한 고객에게만 액세스 할 수 있기를 바랍니다. URL은 http://www.domainname.com/Content/PDF/ABC.pdf (.pdf, 내선 번호 포함) 이제 컨트롤러와 동작에 연결하려고합니다. 코드로 작성했습니다. routes.RouteExistingFiles = true; routes.MapRoute ("PDF", "Content/PDF/{id}", 새 {컨트롤러 = "사용자", 동작 = "GetPdf"}); 그럼 내 정의 된 경로를 거치지 않고도 pdf 파일이 바로 열립니다. 내 샘플 프로젝트에 추가 한 것과 동일한 코드가 있고 거기서 작동합니다. (이상한 !!!) – shakti