2015-09-06 70 views
0

我在asp.net,C#,.net FrameWork 4.0 我在我的webhost的下載文件夾中有一個文件,我無法刪除它現在!我可以刪除任何其他文件,但只有這一個,一個或兩個文件有這樣的問題。嘗試刪除文件表單服務器時嘗試執行未經授權的操作錯誤

我不知道原因......但我認爲文件安全性存在問題。 當我學嘗試刪除與這樣的文件:

FileInfo fi = new FileInfo("file.dat"); 
if (fi.Exists) fi.Delete(); 

的文件名和路徑是在路徑正確可用。 so fi.Exists返回true,然後fi.Delete執行... 但引發此錯誤「訪問路徑...被拒絕!」

我認爲我的應用程序的權限是有限的,不能刪除該文件。 所以我決定一個FullControl權限設置爲這樣的文件:

FileInfo fi = new FileInfo("file.dat"); 
FileSecurity sec = fi.GetAccessControl(); 
sec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow)); 
fi.SetAccessControl(sec); 

但現在,將引發此錯誤:試圖執行未經授權的操作

問題出在哪裏?... ? 我如何讓我的應用程序刪除所有文件沒有問題...? 請儘快幫我... Thanx ...

+0

看來你的應用程序沒有改變文件的安全許可的必要的權利,你不能做任何事情,形成你的代碼,我建議您在IIS或聯繫支持的應用程序的權限。 –

+0

如何檢查我的區域設置IIS中的應用程序權限? – dph

+0

請注意,如果您嘗試添加'CryptoKeyAccessRule',也會發生同樣的情況。 – vapcguy

回答

1

在運行任何代碼以確保IIS Usr或所有用戶都有權訪問之前,您需要更改文件的權限。請記住,您的ASP.NET應用程序正在應用程序池的上下文中運行。在另一個環境下運行的唯一方法是開啓模擬。這可能是文件是在運行IIS的本地帳戶下的不同服務器(負載平衡)下創建的,現在由於權限不同而無法刪除它。如果您在應用程序池(服務帳戶等)中的特定環境下運行,那麼您不應該有這些問題。

有關假冒的更多信息,請點擊此鏈接(https://msdn.microsoft.com/en-us/library/xh507fc5(v=vs.100).aspx)。

使用模擬時,ASP.NET應用程序可以使用發出請求的用戶的Windows標識(用戶帳戶)執行。模擬通常用於依賴Microsoft Internet信息服務(IIS)對用戶進行身份驗證的應用程序中。 默認情況下禁用ASP.NET模擬。如果爲ASP.NET應用程序啓用模擬,則該應用程序將在訪問令牌IIS傳遞給ASP.NET的標識的上下文中運行。該令牌可以是經過身份驗證的用戶令牌,例如已登錄的Windows用戶的令牌或IIS爲匿名用戶提供的令牌(通常爲IUSR_MACHINENAME身份)。 啓用模擬時,只有您的應用程序代碼在模擬用戶的上下文中運行。編譯應用程序並使用ASP.NET進程的標識加載配置信息。有關更多信息,請參閱配置ASP.NET進程標識。已編譯的應用程序將放入Temporary ASP.NET文件目錄中。正在模擬的應用程序標識需要具有對此目錄的讀/寫訪問權限。模擬的應用程序標識還需要至少讀取應用程序目錄和子目錄中的文件。有關更多信息,請參閱ASP.NET必需的訪問控制列表(ACL)。

<configuration> 
    <system.web> 
    <identity impersonate="true"/> 
    </system.web> 
</configuration> 
+0

我如何設置這些設置,你是指......?我的意思是在我的語言環境IIS中,我已將網站應用程序池設置爲.Net4.5!現在我該怎麼做才能解決我的問題......?在我的IIS中有一些設置,我必須設置主題? – dph

+0

您試圖訪問的文件共享在哪裏?我在上面提供了更多關於模擬的信息。 –

+0

您的網站正在使用的帳戶位於您的網站正在使用的應用程序池的應用程序池高級設置中。這是「身份」屬性。如果您不想使用內置帳戶,則必須指定一個帳戶並授予其執行操作的權限,否則,如果您的網站的用戶擁有這些權限,則必須添加將上面的代碼塊設置爲您的web.config並啓用ASP.NET模擬,可在您的網站> IIS部分>認證中找到。選擇它,然後選擇啓用。 – vapcguy

相關問題