簡體   English   中英

ASP.Net“訪問路徑''被拒絕。”文件上傳控制在Web服務器(IIS7)中不起作用

[英]ASP.Net “Access to the path '' is denied.”File Upload Control not Working in Web Server (IIS7)

我目前正在開發一個網站應用程序,其功能之一是能夠上傳和下載文件。 所有上傳的文件都將存儲在外部網絡位置。 首先是頁面加載,它會創建一個臨時文件夾,所有上傳的文件都將存儲在那里。 然后當他們單擊保存按鈕時,它會創建一個文件夾,將永久存儲在該文件夾中,並將所有文件放在文件夾中,並自動刪除臨時文件夾。 它在我的本地主機服務器上工作正常,但是當我將它上傳並放入 Web 服務器時,它會引發錯誤,拒絕訪問路徑“(網絡路徑)”。

ASP.NET 無權訪問請求的資源。 考慮向 ASP.NET 請求標識授予對資源的訪問權限。 ASP.NET 有一個基本進程標識(通常是 IIS 5 上的 {MACHINE}\\ASPNET 或 IIS 6 和 IIS 7 上的網絡服務,以及 IIS 7.5 上配置的應用程序池標識),如果應用程序不是模擬的,則使用該標識。 如果應用程序通過 模擬,則身份將是匿名用戶(通常為 IUSR_MACHINENAME)或經過身份驗證的請求用戶。

要授予 ASP.NET 對文件的訪問權限,請在文件資源管理器中右鍵單擊該文件,選擇“屬性”並選擇“安全”選項卡。 單擊“添加”以添加適當的用戶或組。 突出顯示 ASP.NET 帳戶,並選中所需訪問權限的復選框。

我已經研究了近一個星期的解決方案,它說這是關於許可的問題,但網上的所有解決方案都不清楚,對我不起作用。 我希望有人可以幫助我逐步說明如何配置權限以允許網絡訪問任何可能的工作解決方案。

更新:這是當前的屏幕截圖:

IIS7 中的網站權限

IIS7 中的網站權限

我下載了 ASP.NET 組件,但找不到 ASP.NET 帳戶。 我有 .net 4.0 應用程序池。 我應該允許我的上傳文件夾嗎? 請幫幫我。

謝謝大家。

這是一個權限問題,您已經有了一個提示:

要授予 ASP.NET 對文件的訪問權限,請在文件資源管理器中右鍵單擊該文件,選擇“屬性”並選擇“安全”選項卡。 單擊“添加”以添加適當的用戶或組。 突出顯示 ASP.NET 帳戶,並選中所需訪問權限的復選框。

  1. 探索到 IIS 管理器。
  2. 展開站點節點並找到您的站點,然后右鍵單擊。
  3. 單擊“瀏覽”,您將被重定向到物理文件路徑。
  4. 右鍵單擊文件夾並轉到安全選項卡
  5. 單擊編輯按鈕(將彈出另一個窗口)
  6. 在此窗口中添加 iis 用戶通常以 IIS_MACHINENAME 為前綴
  7. 為該用戶設置完全權限,您就可以開始了。

我在同樣的問題上苦苦掙扎,雖然我們做了所有顯示的權限更改,但我仍然遇到錯誤。 最后,我使用文件上傳控件編寫了一個小測試頁面,當我嘗試使用各種文件時,它運行良好。

我發現這兩個文件名之間略有不同,這導致了錯誤

  • this_file1.ppf
  • 這個文件1.pdf

是的,下划線導致了訪問沖突錯誤,我不知道為什么? 這也適用於文件名中有空格的文件。 如果這有所不同,我們將在 Windows Server 2012 R2 上運行網絡服務器 (IIS7)。

我沒有在控件中找到任何對此的引用,盡管它也會在長文件名上失敗。

就我而言,我只是將所需文件復制到 c 驅動器中的wwwroot 文件夾,並更改了物理路徑,它解決了我的問題。

固定我的:

  1. 文件properties
  2. security選項卡下單擊add
  3. 添加 iis 用戶,在我的情況下為IIS_IUSRS ,然后單擊Check Names
  4. 單擊OK並從權限類別grant full-access權限

如果找不到IIS_IUSRS您可以隨時轉到Security > Add > Advanced > Find Now以查找 IIS 用戶名。

我還通過輸入當前登錄的username並授予完全訪問權限來添加當前登錄的用戶

只是一個提示:就我而言,以下代碼不起作用並發出消息“訪問路徑 (...) 被拒絕”。

var Request = HttpContext.Current.Request;
foreach (string file in Request.Files)
{    
    var postedFile = Request.Files[file];    
    postedFile.SaveAs(pathToSave);
}

這個工作正常:

var Request = HttpContext.Current.Request;
foreach (string file in Request.Files)
{    
    var postedFile = Request.Files[file];    
    using (var stream = new FileStream(pathToSave, FileMode.Create))
    {
       await postedFile.InputStream.CopyToAsync(stream);
    }
}
  

暫無
暫無

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

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