2017-03-27 2 views
0

위키와 같은 ASP.NET MVC 애플리케이션이 있습니다. 이 응용 프로그램은 많은 페이지를 가지고 있으며 페이지는 그림을 사용합니다. 페이지 내용은 데이터베이스에 저장되지만 이미지는 파일 시스템에 저장됩니다. 파일 시스템에서 데이터베이스로 이미지를 이동하기로 결정했습니다. Redently 이미지를 데이터베이스로 이동했습니다 (SQL Server의 파일 테이블 사용). 모두 괜찮아요.하지만 지금은 문제에 직면했습니다.ASP. NET MVC 5 이미지 라우팅

<img src='/Attachments/myImage.png' /> 

을하지만 지금은 DB에서 이미지의 데이터를 얻을 : 이미지 폴더에 저장 될 때 이전, 그래서 그들을 사용 변경 IMG-태그의

public class ImagesController : Controller 
{ 
    public FileResult GetFile(string filename) 
    { 
     byte[] data = .... // here is retrieving data from db; 
     string mimeType = ... // here is detecting mime type   
     return File(data, mimeType); 
    } 
} 

및 SRC 속성 :

<img src='/Images/GetFile?filename=myImage.png' /> 

모든 페이지를 수정하고 이미지 링크를 변경해야하기 때문에 문제가됩니다. 모든 페이지 내용을 편집하지 않고 /Attachemts/myImage.png에서 Images/GetFile?filename=myImage.png으로 이미지 요청을 리디렉션 할 수 있습니까? 나는 foolowing 경로를 사용하려고 시도했다 :

routes.MapRoute("old images", "Attachments/{filename}", 
new 
{ 
    controller = "Images", 
    action = "GetFile" 
}); 

나는 실패했다. 미리 감사드립니다.

+0

첨부 파일 폴더가 라우팅에서 제외되어 있지 않은지 확인하십시오. 다음과 같은 검색 및 제거 : routes.IgnoreRoute ("첨부 파일/{* pathInfo}") – Tacud

+0

@Tacud이 폴더는 제외되지 않습니다. – Pupkin

답변

0

OK, 나는 비슷한을 해결하기 위해 필요 해요 있기 때문에, 약간의 연구 나 자신을했고, 나는 이것이 당신이 찾고있는 무엇이라고 생각 : https://weblogs.asp.net/jongalloway/asp-net-mvc-routing-intercepting-file-requests-like-index-html-and-what-it-teaches-about-how-routing-works

그것은 MVC가 요격을하지 않는 것으로 나타났다 확장자가있는 모든 URL은 동작을 변경해야합니다.

희망이 있습니다.

+0

이 경우 사실이지만 더 나은 방법은 IIS 수준에서 리디렉션을 수행하는 것입니다. MVC가 * 모든 * 정적 파일을 처리하면 응용 프로그램이 불필요하게 느려질 것입니다. –