2010-08-19 42 views
0

我已經實現了我自己的VirtualPathProvider來加載'嵌入式'視圖。ASP.NET MVC,自定義VirtualPathProvider和IIS6

從Visual Studio運行時,這種方式運行良好,但在IIS6上運行時出現'未找到視圖'消息。

web.config中是否有任何缺失,或者是否還有其他問題?

我已經添加了一些日誌記錄,似乎即使我在Application_Start中註冊了Custom VirtualPathProvider,System.Web.Hosting.MapPathBasedVirtualPathProvider仍然被使用。

回答

0

是你的沒用過嗎? VirtualPathProviders以棧的形式運行,因此,在您的VirtualPathProvider中,您應該注意到基類成員「Previous」實際上是「MapPathBasedVirtualPathProvider」的實例。

如果您:

  1. 附上您的調試器IIS

  2. 請在你的web.config的變化,那麼它改回來,然後保存(觸發再循環) - 同時還附!

  3. 將在您的VPP一個斷點FILEEXISTS

  4. 打一頁

貴VPP被打中?如果是這樣,這可能是一個問題,在第一個請求後,MVC ViewEngine緩存阻止您的VPP受到額外請求的打擊...

+0

我沒有嘗試這樣做呢。但是,我創建了一個自定義的View Engine,我在其中將FindP(this.VirtualPathProvider)記錄在FindView()方法中。我的自定義VPP從不出現在日誌中,我相信緩存和未緩存的視圖都會通過該方法。 – Bertvan 2010-09-06 08:11:46

+0

如果你的VPP甚至沒有出現在ViewEngine中,你是否100%確定Application_Start方法被調用來註冊VPP?註冊是Application_Start的第一行嗎?如果不是,請嘗試放置它。 VPP註冊實際生效的地方數量非常有限。 – Jeff 2010-09-06 23:52:18