2017-02-25 52 views
0

我有一個MVC的Web應用程序,我想讀一個XML文件,它會給我一個圖像文件夾/文件列表顯示。無法讀取目錄中的XML文件?

我在本地一個Windows 10的計算機上使用Visual Studio 2015年在我的控制器中運行這個當我嘗試做下面的代碼來獲取XML文件,我立即得到一個錯誤"The Web server is configured to not list the contents of this directory."

public ActionResult Index() 
{ 
    XElement xelement = XElement.Load("~\\Gallery\\Gallery.xml"); 
    IEnumerable<XElement> galleries = xelement.Elements(); 

    return View(); 
} 

我然後做了一些研究,發現我應該把以下內容放在我的web.config文件中。當我這樣做,並轉到視圖,它會立即列出我的目錄中的文件夾。

<system.webServer> 
    <directoryBrowse enabled="true" /> 
</system.webServer> 

我也跟着一些信息,我去了IIS,選擇目錄瀏覽,然後「啓用」。這似乎沒有任何影響。

關於我能做什麼的任何想法?

錯誤消息 enter image description here

+0

返回視圖與解析xml文件無關,而xml文件又與目錄瀏覽無關。你如何調用你的索引路線,以及你什麼時候收到錯誤信息? –

+0

這是我的視圖的鏈接,我原來的帖子中的ActionResult就是它的索引。 Click here Caverman

+0

當我點擊鏈接時,我收到了錯誤消息immediatley。我在ActionResult的開頭部署了一個斷點,除非我評論處理XML或FileSystem的任何代碼,否則它永遠不會到達那裏。如果我評論該代碼,它將轉到視圖,否則它是錯誤消息。如果我從上面將代碼放在web.config中,那麼當你點擊鏈接時,它將立即列出Gallery文件夾中永遠不會觸及斷點的文件夾。 – Caverman

回答

2

"~\\Gallery\\Gallery.xml"並不理解爲你通過XElement.Load預期的路徑。

可以映射ASP.NET應用程序路徑文件系統HostingEnvironment.MapPath路徑,所以:

XElement xelement = XElement.Load(HostingEnvironment.MapPath("~\\Gallery\\Gallery.xml")); 
+0

謝謝。我相信這是正確的,但是,我仍然得到有關目錄瀏覽的錯誤消息,除非我刪除引用XML或FileSystem的任何代碼。我最初打算做一個Directory.Getfiles並列出文件夾,然後列出文件夾。 – Caverman

+0

您的網站運行的用戶帳戶是否有權訪問該文件夾 –

0

我張貼的答案來,以防有人這個問題,其他人遇到了同樣的問題。

問題最終導致我有一個名爲「Gallery」的控制器以及我的站點中名爲「Gallery」的文件夾。我的HTML ActionLink創建了一個超鏈接而不是。一旦我將圖像文件夾更改爲GalleryImages,那麼一切正常。

不要將您的控制器命名爲您站點中的文件夾名稱。