使用mvc模式读取服务器上的文件,关于C#:如何使用asp.net MVC应用程序从服务器上的网络路径读取...
我已經在運行.net MVC應用程序的Web服務器上設置了到另一臺用于存儲上載文件的服務器的網絡路徑。為了允許通過應用程序將文件上傳到網絡路徑,我修改了IIS中的應用程序池,以便該應用程序有權上傳到它。這一切都很好。
為了使應用程序在加載頁面時能夠讀取文件,我在IIS中創建了一個虛擬目錄,該目錄現在作為IIS中該站點的文件系統的一部分出現。然后,如何在我的應用程序中訪問并為此位置生成路徑,以便可以將該路徑傳遞給DB,然后將圖像稍后加載到頁面上?
假設我的路徑是:
虛擬路徑為useruploads / image.jpg
如何讓我的應用程序識別我創建的虛擬路徑?
或者,可以在IIS中刪除虛擬目錄,是否可以讓我的應用程序直接訪問Web服務器上的網絡路徑?
編輯-要添加到上面,我在iis中映射了網絡路徑,它在iis中顯示在我的站點下,如下所示:
然后,我想使用?/ useruploads / file.jpg這樣的地址從asp.net mvc應用程序內的此目錄中讀取。如果我可以讓我的應用程序識別該虛擬目錄,那么我將能夠從中讀取該目錄。
編輯2號
好的,我認為我已經確定了問題的性質,并且更加清楚了。基本上,當我在網頁上鏈接到該文件時,我訪問的文件就很好。但是我在Chrome中收到消息"不允許加載本地資源"。我認為這只是Web瀏覽器不允許我加載圖像的問題,因為頁面上使用本地地址(網絡路徑)引用了該圖像。因此,我現在試圖在應用程序中創建一個操作以使用指向我的操作的Url.Action加載圖像,然后將id轉換為圖像流,例如
在我看來:
其中Mode.image類似于folder image.jpg。
行動:
public FileResult image(string id)
{
var dir = @"\\SERVERNAME\upload";
var path = Path.Combine(dir, id);
return base.File(path,"image/jpg");
}
"為了讓應用程序在加載頁面時讀取文件,我在IIS中創建了一個虛擬目錄,該目錄現在作為IIS中該站點的文件系統的一部分出現" –您可以解釋一下;為什么要為文件存儲區創建虛擬目錄?您是否在從Web HDD或其他服務器HDD的ASP.net MVC應用程序中讀取文件時遇到問題?
Web服務器上的網絡路徑來自另一臺服務器,因此另一臺服務器HDD作為Web服務器上的網絡路徑。我可以使用地址\ serverIP useruploads上傳到它,但是我似乎無法使用相同的地址路徑從中讀取信息。我需要一個應用程序可以識別的路徑,因此嘗試在iis中為該應用程序添加虛擬目錄,然后在這里詢問是否有我的應用程序可以查看虛擬目錄的方式,例如?/ useruploads / file.jpg,所以我可以在應用程序中這樣引用它
我應該說,當我說讀它時,是指使用通過應用程序的鏈接將圖像加載到html頁面上。因此,應用程序調用\ serverIP useruploads image.jpg作為數據庫中圖像的地址,但這會導致不允許在chrome中加載本地資源錯誤,并且不會在其他任何瀏覽器中加載。我真正需要的是至少將該網絡路徑映射到應用程序可以識別的虛擬地址。
添加新的VD并非可行的方法-您需要能夠使用ASP.net MVC應用程序的應用程序池標識用戶帳戶讀取其他服務器的UNC路徑。這是一種非常常見的情況-您只需要分配正確的權限。
很公平。我確實有權使用在應用程序池中設置的帳戶來讀取該文件夾,我必須對其進行設置才能上傳到該文件夾??。現在仔細檢查文件夾,我可以看到我正在使用的帳戶對文件夾的讀/寫等具有完全控制權。因此權限似乎不是問題。
使用server.MapPath()將相對URL映射到應用程序中的物理路徑。
您好Codeunderflow,我不確定如何提供幫助,我的問題是該位置不是我的應用程序中的物理路徑,而是該應用程序所在的Web服務器上的物理路徑。我可以引用該物理位置很好,但是由于它是服務器上的本地路徑,因此無法在瀏覽器中加載。因此,我需要以某種方式偽造其位置作為應用程序的一部分,或者做我認為已經解決的事情,即向我的應用程序中的控制器動作發送一個ID,該動作從網絡路徑獲取文件并將圖像流式傳輸到這一頁。
@Rob我建議您在此周圍放一些調試代碼(1)您可以枚舉UNC驅動器中的文件嗎? (2)您要在枚舉中查找的文件嗎? (3)當您嘗試以只讀方式打開文件時,您得到一個錯誤,以及確切的錯誤代碼是什么(即DOS錯誤2、5等)。您如何確定您的應用程序池帳戶具有正確的權限并且可以看到該文件?通常,應用程序池帳戶是非交互式的,您不能使用這些憑據登錄。
您好菲利普,我已經更新了我的問題,因為我認為我已經確定了我的問題,這僅僅是因為即使我可以訪問該地址,我也無法使用本地地址加載圖像,因為瀏覽器不允許這樣做。地址必須是某些東西。因此,我正在嘗試我在問題中所說的,如果您能提供任何幫助,將不勝感激。
所以最后我的問題是我無法將圖像放置在頁面上,因為它使用的是服務器上的本地地址,出于安全原因,該地址在瀏覽器中是不允許的。 為了使用網絡路徑,我不得不使用
我認為此操作:
public FileResult image(string id)
{
var dir = @"\\SERVERNAME\upload";
var path = Path.Combine(dir, id);
string contentType = MimeMapping.GetMimeMapping(path);
return base.File(path, contentType);
}
然后,這將圖像返回到頁面,盡管這意味著該圖像不會被緩存。
總結
以上是生活随笔為你收集整理的使用mvc模式读取服务器上的文件,关于C#:如何使用asp.net MVC应用程序从服务器上的网络路径读取...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: intel服务器芯片组介绍,Intel芯
- 下一篇: 上传文件到云服务器存储路径,上传文件到云