2012-05-23 2 views
0

누구나 사용자 지정 Hander (.ashx) 파일을 만드는 방법을 알려줄 수 있습니다. 요구 사항 : 응용 프로그램에 .pdf 요청이 들어 오면 해당 .ashx 처리기를 호출하고 싶습니다. .ashx 처리기에는 파일을 표시할지 여부를 나타내는 논리가 있습니다.HTTP 처리기 만들기

들어오는 경로는 "http://www.domainname.com/Content/PDF/ABC.pdf"입니다. 이 URL은 "http://www.domainname.com/Handler.ashx"파일에서 처리해야합니다.

내가 사전에

감사,지도를 만드는 방법을 알고, 내 응용 프로그램에서 핸들러를 등록하려고합니다

.

답변

0

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은 해당 위치의 경로를 보유합니다.

+0

처음에는 mvc 라우팅 솔루션만을 선택했습니다. 하지만 !!, 내 URL "http://www.domainname.com/Content/PDF/ABC.pdf"가 직접 실행되고 정의 된 경로를 지키지 않습니다. routes.RouteExistingFiles = true;routes.MapRoute ("PDFRoute", "Content/PDF/{id}", 새 {컨트롤러 = "사용자", 동작 = "GetPdf", id = UrlParameter.Optional}); – shakti

+0

@shakti : 액션 메서드를 통해 노출하는 경우이를 통해 이동합니다. 내 업데이트 답변을 참조하십시오. – Shyju

+0

내 요구 사항을 이해하십시오. 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