簡體   English   中英

在 ASP.NET MVC 中看不到另一台服務器的路徑

[英]Can't see path to another server in ASP.NET MVC

我有一個需要讀取 Excel 文件的內部 ASP.NET MVC 站點。 該文件與運行 ASP.NET MVC 的服務器位於不同的服務器上,為了防止出現訪問問題,我試圖將其復制到 ASP.NET MVC 服務器。

它在我的開發機器上運行正常,但是當它部署到服務器時,它看不到路徑。

這是模型(C#)中的刪減代碼:

string fPath = HttpContext.Current.Server.MapPath(@"/virtualdir");
string fName = fPath + "test.xlsm"; 

if (System.IO.File.Exists(fName))
{
    // Copy the file and do what's necessary
}
else
{
    if (!Directory.Exists(fPath))
        throw new Exception($"Directory not found: {fPath} ");
    else
        throw new Exception($"File not found: {fName } ");
}

我得到的錯誤是

找不到目錄:

其次是路徑。

錯誤中的路徑是正確的 - 我已經將它復制並粘貼到資源管理器中,它解決了。

我試過使用完整的 UNC 路徑、映射的網絡驅動器和虛擬目錄(如上面的代碼)。 在需要時,這些被授予網絡管理員權限(僅用於測試!)但仍然沒有任何效果。

內部網站正在使用直通身份驗證,但我使用了對虛擬目錄具有完全管理權限的特定憑據,並且 IIS 中的虛擬目錄將 OK 擴展到所需的文件夾。

我還嘗試為應用程序池(以集成模式運行)提供完整的網絡管理員權限。

我有點希望我只是忽略了一些簡單的東西,這不是“安全功能”。

我發現這個問題在服務器 asp.net mvc 之間復制文件,但答案是使用 FTP,如果可以避免的話,我不想走這條路。

任何幫助將不勝感激。

首先,為了確保您的目錄正確構建,我將使用 Path.Combine。

string fName = Path.Combine(fPath, "test.xlsm")

其次,我會檢查以下帖子並在那里嘗試一些事情,因為它似乎是一個類似的問題。

Directory.Exists 不適用於網絡路徑

如果您仍然無法看到該目錄,則該用戶很可能無權訪問該網絡路徑。 可能發生的情況是運行您的應用程序的應用程序池可以訪問服務器上的目錄。 生產盒可能沒有相同的訪問權限。 您必須與網絡工程師聯系才能解決該問題。

或者,您可以編寫一個 Powershell 腳本,以有權訪問生產服務器和開發服務器的用戶身份運行以將文件復制到生產服務器,如果這是您的最終目標,並且您的服務器管理員可以為您安排它在您的環境中是允許的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM