waghniteen Ответов: 1

При отправке файла excel в папку на live server он выдает исключение "доступ к пути запрещен


Доступ к пути 'C:\HostingSpaces\sghitech\pwdpune.sghitech.co.in\wwwroot\ROAD март подразделения STATSICS 2016.xls-отрицается.

Что я уже пробовал:

public partial class StatisticsReport : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }
        protected void btnUpload_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
                string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
                string FolderPath = ConfigurationManager.AppSettings["FolderPath"];

                string FilePath = Server.MapPath(FolderPath + FileName);
                FileUpload1.SaveAs(FilePath);
                Import_To_Grid(FilePath, Extension, rbHDR.SelectedItem.Text);
            }
        }
        private void Import_To_Grid(string FilePath, string Extension, string isHDR)
        {
            string conStr = "";
            switch (Extension)
            {
                case ".xls": //Excel 97-03
                    conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                    break;
                case ".xlsx": //Excel 07
                    conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                    break;
            }
            conStr = String.Format(conStr, FilePath, isHDR);
            OleDbConnection connExcel = new OleDbConnection(conStr);
            OleDbCommand cmdExcel = new OleDbCommand();
            OleDbDataAdapter oda = new OleDbDataAdapter();
            DataTable dt = new DataTable();
            cmdExcel.Connection = connExcel;

            //Get the name of First Sheet
            connExcel.Open();
            DataTable dtExcelSchema;
            dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            string SheetName = dtExcelSchema.Rows[1]["TABLE_NAME"].ToString();
            connExcel.Close();

            //Read Data from First Sheet
            connExcel.Open();
            cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
            oda.SelectCommand = cmdExcel;
            oda.Fill(dt);
            connExcel.Close();

            //Bind Data to GridView
            GridView1.Caption = Path.GetFileName(FilePath);
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        protected void PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
            string FileName = GridView1.Caption;
            string Extension = Path.GetExtension(FileName);
            string FilePath = Server.MapPath(FolderPath + FileName);

            Import_To_Grid(FilePath, Extension, rbHDR.SelectedItem.Text);
            GridView1.PageIndex = e.NewPageIndex;
            GridView1.DataBind();  
        }
    }

в моем файле Web. config
<appsettings>   
    <add key ="FolderPath" value ="Files/"/>

[no name]

"Отказано в доступе" - это совершенно ясное сообщение об ошибке, и есть только одно реальное средство. Получите разрешение, чтобы доступ не был запрещен.

CHill60

Это веб-приложение, поэтому этот код работает на вашем сервере, а не на клиентской машине. Вам нужно использовать относительный путь-относительно "корня" вашего пространства. У тебя должен быть к этому доступ. Вам никогда не будет предоставлен доступ через диск C: хостингового сервера

1 Ответов

Рейтинг:
1

F-ES Sitecore

Вам нужно будет попросить свой веб-хост включить разрешения на запись на вашем сайте. Если вам не нужно, чтобы эти файлы были общедоступны, сохраните их в папке App_Data. Если вы должны хранить их в своем веб-пространстве, то подумайте о последствиях для безопасности того, что вы делаете. Что происходит, когда я загружаю файл aspx? Хуже того, что происходит, когда я загружаю "default. aspx"? Я могу загрузить и выполнить любой код на вашем сервере, который я хочу.