2010-12-02 2 views
2

При загрузке файла excel я получаю эту ошибку, может ли кто-нибудь мне помочь?Доступ к пути Отказано при загрузке файла excel

Access to the path 'C:\Data\IronElements\Upload\AUMData\20101202 031815.xlsx' is denied. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access to the path 'C:\Data\IronElements\Upload\AUMData\20101202 031815.xlsx' is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Мой код позади файла имеет следующий синтаксис

DateTime date = DateTime.Now; 
       string FileName = Convert.ToString(date.ToString("yyyyMMdd hhmmss")); 
       Directory.CreateDirectory("C:\\Data\\IronElements\\Upload\\AUMData\\Schema"); 
       doesFileExists("C:\\Data\\IronElements\\Upload\\AUMData\\Schema"); 
       fileUpload.PostedFile.SaveAs("C:\\Data\\IronElements\\Upload\\AUMData\\" + FileName + ".xlsx"); 
       System.Threading.Thread.Sleep(5000); 
       string connectionString = WebConfigurationManager.ConnectionStrings["SQLConnection"].ConnectionString; 
       SqlConnection SqlConnect = new SqlConnection(connectionString); 

       try 
       { 
        SqlConnect.Open(); 
        SqlCommand cmdAssetUnderManagement = new SqlCommand("Exec_Insert_AUMAssetValue", SqlConnect); 
        cmdAssetUnderManagement.CommandType = CommandType.StoredProcedure; 
        cmdAssetUnderManagement.ExecuteNonQuery(); 

       } 


       catch (Exception ex) 
       { 
        Response.Write(ex.Message); 
       } 
       finally 
       { 
        SqlConnect.Close(); 
       } 
       lblAUMTA.Visible = true; 
       lblAUMTA.Text = "File Upload Completed"; 
      } 
    private void doesFileExists(string p) 
      { 
       p = string.Concat(p, "\\AUMSchema.xlsx"); 
       if (!File.Exists(p)) 
       { 
        fileUpload.PostedFile.SaveAs("C:\\Data\\IronElements\\Upload\\AUMData\\Schema\\AUMSchema.xlsx"); 
       } 
      } 

ответ

4

Убедитесь, что папка C: \ Data \ IronElements \ Загрузить \ AUMData имеет NTFS разрешение на запись для пользователя, в каком контексте IIS выполняется. Также убедитесь, что вложенные папки C: \ Data \ IronElements \ Upload наследуют разрешения от родителя. Для этого нажмите кнопку «Дополнительно» на вкладке «Безопасность» -> «Изменить разрешения» -> «Проверить права на все дочерние объекты» с наследуемыми разрешениями от этого объекта. -> Хит Ok

+0

У него есть разрешения READ и Write – Sravanthi 2010-12-02 21:35:39

+0

Убедитесь, что у него есть разрешения для учетной записи, с которой работает ASP.NET. О, а также убедитесь, что он работает под учетной записью, которую вы ДУМАЕТЕ. – JohnFx 2010-12-02 21:38:16

1

Учетная запись, на которой работает ваш веб-сеанс, не имеет прав доступа напишите в эту папку. После того, как вы предоставите учетную запись ASP.Net (или какую бы учетную запись вы используете) требуемые разрешения, она должна работать должным образом.

0

Чтобы лучше справляться с такими проблемами разрешения, я всегда создаю пользователя с низким приоритетом для запуска наших веб-сайтов. Пользователь назван в честь самого веб-сайта, поэтому очевидно, для чего он нужен.

Тогда этот пользователь получает только правые папки, в вашем случае C: \ Data \ IronElements \ Upload \ AUMData. Это также хороший способ ограничить доступ к БД - создать логин для этого конкретного пользователя в SQL с минимальными привилегиями.

1

перейдите в приложение, которое вы используете для этого приложения, и измените его идентификатор на «Сетевая служба». Я столкнулся с аналогичной проблемой и исправил то же самое.

Смежные вопросы