2010-09-19 30 views
8

Tôi đã triển khai VirtualPathProvider. VirtualPathProvider đọc lượt xem từ hệ thống tệp.ASP.NET MVC 2 VirtualPathProvider GetFile mọi lúc cho mọi yêu cầu

Tuy nhiên, vấn đề của tôi là phương pháp GetFile(string virtualPath) không được thực thi mỗi lần cho mọi yêu cầu. Tôi nghĩ rằng nó có liên quan đến bộ nhớ đệm, phải không? Những gì tôi muốn là nhận tệp mỗi lần cho mọi yêu cầu. Vì một số trường hợp, trang trong hệ thống tệp sẽ được sửa đổi và người dùng muốn hệ thống hiển thị các thay đổi ngay lập tức.

Cảm ơn.

+0

Nhà cung cấp của bạn có được gọi mỗi khi ở chế độ gỡ lỗi không? Nếu vậy, sau đó là bộ nhớ đệm, vì bộ đệm ẩn chế độ xem bị tắt khi gỡ lỗi được bật. – Clicktricity

+0

Cảm ơn bạn đã phản hồi. VirtualPathProvider được gọi cho mọi yêu cầu, nhưng chỉ có phương thức 'bool FileExists (string virtualPath)' được gọi cho mọi yêu cầu. Tôi đã cố gắng để ghi đè lên tất cả các phương pháp trong VirtualPathProvider, nhưng tôi vẫn không thể tìm thấy giải pháp. –

+0

Thực ra, tôi chỉ chạy một ví dụ trực tiếp từ http://padcom13.blogspot.com/2009/04/virtualpathprovider-example.html. –

Trả lời

15

Tôi đã tự tìm thấy giải pháp trên internet.

Thực sự cảm ơn jbeall đã trả lời vào 07-15-2008, 11:05 SA.

http://forums.asp.net/t/1289756.aspx

Nói cách ngắn, ghi đè các phương pháp sau

  1. GetCacheDependency - luôn luôn trả về null
  2. GetFileHash - luôn luôn trả về giá trị khác nhau

Sau những sửa đổi, cho mọi yêu cầu , MVC lấy tệp từ nguồn trực tiếp.

0
public class MyVirtualPathProvider : VirtualPathProvider 
{ 

    public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart) 
    { 
     return null; 

    } 

    public override String GetFileHash(String virtualPath, IEnumerable virtualPathDependencies) 
    { 
     return Guid.NewGuid().ToString(); 

    } 
} 
Các vấn đề liên quan