2008-12-16 183 views
1

我已經寫了一個新的應用程序在我以前沒有工作過的網絡中,並且遇到了問題。ASP.Net無法看到共享文件夾

如果我有下面的C#代碼:

FileStream fs = File.Create(@"\\MyServer\MyShare\testing.txt"); 
fs.Close(); 

在一個控制檯應用程序,這個代碼能夠正確執行。

在ASP.Net應用程序中,我收到此錯誤:登錄失敗:未知的用戶名或密碼錯誤。

在ASP.Net應用程序,如果我在身份冒充添加=「真」,我得到這個錯誤:訪問路徑「\ MyServer的\ MyShare中\ testing.txt」被拒絕。

我從來沒有遇到過登錄失敗的信息;這是從哪裏來的?如果我在服務器上創建一個應用程序,並將它寫入物理位置,它可以正常工作(因此安全性很好),似乎共享的安全性不起作用(即使設置了「Everyone」完全寫入),或者在服務器級別缺少一些我一般不能查看的東西。

有沒有人知道我在這裏失蹤?我寫了其他應用程序做了類似的事情,從來沒有遇到過這個問題

謝謝!

回答

1

更新:

所以我覺得我張貼了這個太早......它是失敗在我的本地主機的原因是由於目錄被設置爲允許匿名訪問(所以頁面不是冒充;用戶是'')。

它也開始在服務器上工作;然而,在那裏沒有任何改變...我不知道在應用程序的停機/關機過程中是否觸發了什麼,或者是什麼,但一切都按預期工作。

感謝您的意見!

0

問題是,如果身份模仿設置爲false,ASP.NET工作進程帳戶正在嘗試寫入共享,通常是NETWORK SERVICE或ASPNET帳戶。取決於您正在運行的Windows版本。

將impersonate設置爲true,而不指定用戶名或密碼將使用當前用戶身份驗證嘗試並提出請求。

您將需要授予工作進程帳戶權限,這很可能是不可能的。或者B創建應用程序可以模擬的特定帳戶,然後在身份標記中的web.config中指定憑證。

0

默認情況下,ASP.NET應用程序運行爲YourMachine \ IUSR_ YourMachine。您必須將共享上的權限打開到Everyone主體(如果這些機器不在同一個域中,仍然可能無法運行),或者將您的IIS應用程序作爲有權訪問共享的人運行。

您可以更改ASP.NET應用程序下運行由用戶:

。開管理工具 - > Internet信息服務然後右鍵單擊包含應用程序的網站或虛擬目錄,然後單擊屬性。選擇目錄安全選項卡並單擊編輯。最後,在匿名訪問部分中鍵入有權訪問共享的用戶的用戶名和密碼。

邁克