2012-05-23 55 views
0

誰能告訴我如何創建自定義手柄(.ashx)文件。 要求:當請求來到我的.pdf應用程序時,我想調用.ashx處理程序。 .ashx處理程序將具有顯示文件的邏輯。創建HTTP處理程序

我的傳入路徑是「http://www.domainname.com/Content/PDF/ABC.pdf」。 該URL應該由「http://www.domainname.com/Handler.ashx」文件處理。

我想知道如何創建,地圖,並在我的應用程序註冊處理程序提前

感謝。

回答

0

如果您正在使用ASP.NET MVC,請使用Action方法來處理文件內容,爲什麼需要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路由解決方案。但!!,我的網址「http://www.domainname.com/Content/PDF/ABC.pdf」直接得到執行,並沒有通過定義的路由。 routes.RouteExistingFiles = true; (「PDFRoute」,「Content/PDF/{id}」,new {controller =「User」,action =「GetPdf」,id = UrlParameter.Optional}); – shakti

+0

@shakti:如果您通過操作方法暴露它,它將通過。看到我更新的答案。 – Shyju

+0

請理解我的要求: 在Google搜索中顯示我的應用程序的網址。我希望該網址只能在登錄客戶時訪問。 該網址是http://www.domainname.com/Content/PDF/ABC.pdf (帶.pdf,擴展名) 現在我想將它路由到我的控制器和操作。 因爲我編碼。 routes.RouteExistingFiles = true; routes.MapRoute(「PDF」,「Content/PDF/{id}」,new {controller =「User」,action =「GetPdf」}); 然後,PDF文件也直接打開了,而沒有通過我定義的路線。我在示例項目中添加了相同的代碼,它在那裏工作(奇怪!!!) – shakti