2012-02-02 45 views
0

我希望這不是太模糊。 我寫了一個C#組件,它引用了帶有UNC路徑的文件系統。 我在ASP.NET Web應用程序中使用它。 該組件在Visual Studio中正常工作。 (順便說一句:它在WinForm應用程序中引用時也可以正常工作)。 當我使用web應用程序將其部署到IIS(bin文件夾中編譯的DLL)時,DLL無法找到具有UNC路徑的文件。 任何想法?ASP.NET網站的DLL組件內的文件路徑

+0

你能告訴你如何引用你所指的UNC路徑的代碼片段嗎? – Raymund 2012-02-02 01:39:34

+0

IIS運行時可能劑量下的縮進(User)具有持久訪問文件的虛擬目錄。這是常見問題之一,這可能有助於http://stackoverflow.com/questions/1479711/asp-net-reading-and-writing-to-the-file-system-outside-the-application – 2012-02-02 01:53:58

+0

什麼做你的意思是,找不到文件?拋出異常嗎?什麼例外? – 2012-02-02 06:54:19

回答

0

運行該網站的應用程序池的用戶需要訪問該共享文件夾。由於這是另一臺機器,因此您必須將應用程序池用戶從默認值更改爲以下值之一:

1:在兩臺計算機上使用完全相同的用戶名和密碼創建用戶帳戶(其中IIS是和機器託管文件共享)

2:使用活動目錄帳戶(如果您有它可用),在那裏它假設兩臺機器都是一樣的AD


3的成員:嘗試映射來UNC文件夾複製到網站所在機器上的驅動器號。也許(我不確定),您可以爲現有/默認應用程序池用戶帳戶設置[讀取]權限。


當您從VS應用程序它的工作原理的原因是因爲它的下用戶帳戶下運行(和你很可能管理員,具有訪問該網絡共享也)。與桌面應用程序相同:您正在運行它。 ASP.NET應用程序由非登錄用戶的用戶帳戶運行/執行(除非您將其更改爲)。

您會看到您需要指定應用程序池帳戶的密碼(如果您選擇更改它)。這是因爲IIS可以(默認情況下)運行,即使沒有人交互地登錄到該計算機上(人類,在桌面上)。應用程序池用戶實際上已經登錄到了機器,但不是交互式的(這個登錄模式有另一個名字;我認爲是「批處理」)。您會在c:\users文件夾中找到該用戶的個人資料。