2009-02-27 83 views
4

讓我開始說,我不是windows文件權限的專家,所以也許這裏有一些非常基本的東西,我在這裏失蹤。當使用UNC文件路徑時Asp.net FileUploader不起作用

我有一個Asp.net FileUploader控件。我想要將文件上傳到Asp.net應用程序所在的同一臺機器上有一個文件夾。

我希望能夠告訴FileUploader把文件

\\thisMachineName\UploadFolder\ 

但我總是得到一個異常,說明訪問該路徑被拒絕。

如果我改變目錄是

c:\UploadFolder\ 

它工作正常。另外,我可以將上面的UNC放到Windows資源管理器中,它實際上映射到目錄。

任何想法或想法?

- 更新注意:這是一個Windows 2000服務器框,並且該文件夾具有「Everyone」所有可能的允許權限。

回答

3

我總是看到人們做的一件事就是他們未能對共享設置權限。要設置共享文件夾,你必須做到以下幾點:

1)確定下,你會被連接到共享
2)帳戶授予在文件系統上該帳戶的訪問權限
3)授予此帳戶對網絡文件共享的訪問權

在這種情況下,第1號通常意味着檢查您的配置或僅使用進程資源管理器確定ASP.NET運行在哪個帳戶下。谷歌有關如何做到這一點的大量信息。

第2號是顯而易見的。您登錄物理驅動器所在的機器,瀏覽到資源管理器中的文件夾,右鍵點擊它並點擊安全選項卡。我們已經做了這麼多次。

第3號是人們陷入困境的地方。是的,工作人員帳戶現在擁有本地文件系統的權限,但不能通過網絡連接到本地文件系統。從安全選項卡跳回到網絡共享選項卡並查找權限按鈕。您將使用它來授予工作人員帳戶連接到共享的權限。

我看到的第二個問題是,當人們試圖將機器A上的訪問權限授予僅存在於機器B上的帳戶時,這通常不起作用。機器A和機器B都必須屬於A和B都信任的用於認證用戶的公共域。運行Windows的企業通常使用ActiveDomain來控制網絡上的訪問權限。

爲了有ASP。機器B上的NET工作進程訪問機器A上的共享,工作進程必須在網絡上驗證的帳戶下運行,而不僅僅是本地機器。大多數情況下,您必須在網絡上創建特定帳戶,並將該帳戶權限授予這兩臺計算機,然後使用該帳戶爲您的網站運行ASP.NET工作進程。

如果你摸不着頭腦,那麼你有一些學習要做。這東西不容易。我強烈建議閱讀以下內容:

http://msdn.microsoft.com/en-us/library/ms978378.aspx

其相對清晰,包含了你需要知道的一切。

+0

非常感謝! 我不知道,當你使用UNC(即使在我的情況下,它指的是本地計算機),它通過這個網絡共享安全的東西,除了文件夾的正常權限。 我給ASPNET用戶讀/寫訪問共享,現在都是肉汁。 – spilliton 2009-02-27 19:09:46

1

您可以將文件放在該目錄中,但ASP.NET進程運行的用戶呢?在Windows Server 2003上(大概是2008年,但我不確定),ASP.NET運行在網絡服務帳戶下,幾乎沒有任何權限,尤其是在整個網絡中。您必須在ASP.NET應用程序上使用模擬或使用Everyone訪問權限設置共享。對於這種情況,我通常只需與Everyone訪問權限設置一個共享,並進行防火牆保護,以便只有Web服務器才能訪問。

+0

感謝Chris的迴應。我向我的帖子添加了一條更新註釋,因爲我忘記了包含這是一個2k服務器框,以及我在UploadFolder上的權限。 我只是試着給「網絡服務」完整的權限,我仍然得到訪問被拒絕的錯誤。 – spilliton 2009-02-27 17:09:17

0

除了威爾的回答。

我必須將權限授予:NETWORK帳戶,而不是NETWORK SERVICE帳戶。

在共享文件夾的安全選項卡中添加NETWORK作爲新用戶並授予所需的權限。