2012-06-05 2 views
0

Been возникли проблемы ASP.NET все утро, и теперь у меня новый, с этимДоступ к пути отрицается ... Почему?

string filepath = ""; 
filepath = Server.MapPath(Request.QueryString["fileDownloadable"]); 
if (filepath != null) 
{ 
    Response.Clear(); 
    Response.AddHeader("content-disposition", "attachment; filename=MyPDF.pdf"); 
    Response.WriteFile(filepath); 
    Response.ContentType = ""; 
    Response.End(); 
} 

дает мне ошибку на линии 18, которая является Response.WriteFile(filepath); и говорит Доступ к пути запрещен ... . Почему он это делает?

Request.QueryString["fileDownloadable"] приходит из этого кода ...

<li><a href="./DownloadableProducts.aspx?fileDownloadable=/downloadableProducts/MyPDF.pdf" runat="server">IPC Client Personal Financial Website Feb 12</a></li>

Я проверил разрешения на папку, и они имеют тот же вид разрешений и любой другой папки в моем корне.

Любые предложения, пожалуйста?

Я побежал этот код Inbetween моего кода позади, чтобы увидеть, если файл существует ..

if(File.Exists(filepath)){ 
} 

и он побежал страницу без ошибок, но не функциональна страница Wasnt работы, это говорит мне, что FilePath не существует.

+0

Очистите свой кеш и заново откройте браузер, особенно. если вы тестировали в течение определенного периода времени в том же окне браузера. Эта фиксированная проблема для меня. – IrishChieftain

+0

Вы проверили папку, но вы проверили файл, который вы пытаетесь загрузить, чтобы узнать, есть ли у него правильное разрешение? –

+0

Так оно бросает исключение отказа доступа? Или это ошибка записывается на консоль? – Botonomous

ответ

0

Доступ к пути, скорее всего, будет отклонен, потому что он, вероятно, не существует. Прежде чем просто вынести файл в Response.WriteFile, вы должны выполнить хотя бы проверку, чтобы проверить, существует ли файл в первую очередь. Это также даст вам возможность убедиться, что путь, который он пытается получить, будет работать.

Также имейте в виду, что он не будет знать о «относительном» пути, над которым вы работаете в рамках веб-приложения. Вы должны убедиться, что используете либо Server.MapPath, либо какой-либо параметр конфигурации, чтобы ваша переменная filepath выглядела как абсолютный путь к ОС, такой как E:\Inetpub\wwwroot\....

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