[C#] 경로에 대한 액세스가 거부 된 이유는 무엇입니까?

파일을 삭제하려고하는데 문제가 있지만 예외가 발생합니다.

if (result == "Success")
{
     if (FileUpload.HasFile)
     {
         try
         {
              File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
              string filename = Path.GetFileName(btnFileUpload.FileName);
              btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
         }
         catch (Exception ex)
         {
               Message(ex.ToString());
         }
      }
}

또한 삭제하려는 폴더는 네트워크 서비스를 완전히 제어 할 수 있습니다.

전체 예외 메시지는 다음과 같습니다.

System.UnauthorizedAccessException : ‘C : \ Users \ gowdyn \ Documents \ Visual Studio 2008 \ Projects \ hybrid \ hybrid \ temp_loginimages \ enviromental.jpg’경로에 대한 액세스가 거부되었습니다. C : \ Users \ gowdyn \의 System.IO .__ Error.WinIOError (Int32 errorCode, String maybeFullPath) at hybrid.User_Controls.Imgloader_Add_Edit_Tbl.btnUpdate_Click (Object sender, EventArgs e)의 System.IO.File.Delete (String path) 문서 \ Visual Studio 2008 \ 프로젝트 \ hybrid \ hybrid \ User_Controls \ Imgloader_Add_Edit_Tbl.ascx.cs : 줄 242

어떤 아이디어?



답변

에 따르면 File.delete를 방법

UnauthorizedAccessException4 가지의 수단의 하나

  • 발신자에게 필요한 권한이 없습니다.
  • 파일이 사용중인 실행 파일입니다.
  • 경로는 디렉토리입니다.
  • 경로가 읽기 전용 파일을 지정했습니다.

답변

나는 또한 문제가 있었 으므로이 게시물에 걸려 넘어졌다. 복사 / 삭제 전후에 다음 코드 줄을 추가했습니다.

지우다

File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);

File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);


답변

이것은 오래된 문제이지만 검색하는 동안 문제가 발생했습니다. SaveAs의 저장 경로에 실제 파일 이름 구성 요소가 누락 된 것으로 나타났습니다 …

string uploadPath = Server.MapPath("~/uploads");
file.SaveAs(uploadPath); // BAD
file.SaveAs(Path.Combine(uploadPath, file.FileName)); // GOOD


답변

사용자가 웹 사이트에 연결하려고하면 IIS가 IUSER_ComputerName 계정에 연결을 할당 합니다. 여기서 ComputerName은 IIS가 실행되는 서버의 이름입니다. 기본적으로 IUSER_ComputerName 계정은 Guests 그룹의 구성원입니다. 이 그룹에는 보안 제한이 있습니다. 해당 폴더에 대한 IUSER_ComputerName에 대한 그랜드 액세스를 시도하십시오.

다음 은 IIS 보안에 대한 매우 잘 설명 된 답변입니다.

도움이 되었기를 바랍니다


답변

Visual Studio를 마우스 오른쪽 단추로 클릭 하고 관리자 권한으로 실행을 클릭 하십시오.


답변

대상이 파일이어야한다는 것을 알지 못했기 때문에 오류가 발생했습니다. cmd에서 작동하는 두 번째 매개 변수로 폴더가 있습니다. 그리고 Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied.C # File.Move은 첫 번째 매개 변수뿐만 아니라 두 번째 매개 변수를 위해 파일을 원 하기 때문에 디렉토리를 두 ​​번째 매개 변수로 넣으면 c:\crp디렉토리라는 디렉토리가있을 때 와 같이 파일을 쓰려고합니다 c:\crp.

이것은 잘못 될 것입니다 File.Move(args[0],"c:\\crp");

그래서,이 것이 올바른 File.Move(args[0],"c:\\crp\\a.a");

동일 File.Copy


답변

이것이 문제가있는 IIS 웹 사이트 인 경우 사이트 또는 응용 프로그램에서 사용하는 응용 프로그램 풀에 대한 고급 설정의 ID 속성을 확인하십시오. ApplicationPoolIdentity로 설정되어 있으면 경로에 액세스해야하는 사용자입니다.

또는 이전 스타일로 이동하여 ID를 네트워크 서비스로 설정하고 네트워크 서비스 사용자에게 경로에 대한 액세스 권한을 부여 할 수 있습니다.