shanifa S Ответов: 1

При преобразовании страницы. aspx в pdf отображается сообщение "access to path /C denied error".


--исходный код--

&ЛТ;АСП:панели ID="pnlPerson" атрибут runat="сервер"и GT;


Форма Счета-Фактуры





&ЛТ;АСП:идентификатор изображения="Изображение1" атрибут runat="сервер" СРЦ="счет-фактура.формат PNG" ширина="100 Пикс" высота="100 Пикс" /&ГТ;

Счет-Фактура№: 123

Создано:&ЛТ;АСП:метка идентификатор="Label9" атрибут runat="сервер" и GT;

Должный:
<asp:Label ID= "Label10" runat= "server" >



&ЛТ;АСП:кнопка ID="таким" атрибут runat="сервер" текст="Сохранить как PDF" функция onclick="Exporttopdf_Click" /&ГТ;






--с фоновым кодом--

охраняемых недействительными Exporttopdf_Click(объект отправителя, EventArgs в электронной)
{
Ответ.ContentType = " приложение / pdf";
Ответ.AddHeader ("content-disposition", " attachment;filename=Panel. pdf");
Ответ.Кэш.SetCacheability (HttpCacheability.NoCache);
StringWriter sw = новый StringWriter();
HtmlTextWriter hw = новый HtmlTextWriter(sw);
пнлперсон.RenderControl(hw);
StringReader sr = новый StringReader(sw.Метод toString());
Документ pdfDoc = новый документ(PageSize. A4, 10f, 10f, 100f, 0f);
HTMLWorker htmlparser = новый HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.Выходной поток);
pdfDoc.Открыть();
htmlparser.Синтаксический анализ(СР);
pdfDoc.Рядом();
Ответ.Запись (pdfDoc);
Ответ.Конец();

}
общественного переопределить недействительными VerifyRenderingInServerForm(управление )
{

}

--ошибка--

Доступ к пути 'C:\' запрещен.

Описание: необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения Об Исключении: Система.UnauthorizedAccessException: доступ к пути 'C:\' запрещен.

ASP.NET не имеет права доступа к запрошенному ресурсу. Рассмотрите возможность предоставления прав доступа к ресурсу ASP.NET запросите удостоверение личности. ASP.NET имеет базовое удостоверение процесса (обычно {MACHINE}\ASPNET на IIS 5 или сетевая служба на IIS 6), которое используется, если приложение не олицетворяет себя. Если приложение олицетворяет себя через < identity impersonate="true"/>, то это будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный пользователь запроса.

Грант ASP.NET доступ к файлу, щелкните правой кнопкой мыши файл в Проводнике, выберите "Свойства" и выберите вкладку Безопасность. Нажмите кнопку "Добавить", чтобы добавить соответствующего пользователя или группу. Выделите ASP.NET учетная запись и установите флажки для желаемого доступа.

Ошибка Источника:


Строка 246: PdfWriter.GetInstance(pdfDoc, Response.Выходной поток);
Строка 247: pdfDoc. Open();
Строка 248: htmlparser.Синтаксический анализ(СР);
Строка 249: pdfDoc. Close();
Строка 250: Ответ.Запись (pdfDoc);

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

Помогите мне решить эту проблему.. как восстановить это

Заранее спасибо!!

1 Ответов

Рейтинг:
0

Jochen Arndt

Вы должны создать файловый поток с путем, по которому у вас есть доступ на запись, и передать этот поток PdfWriter.GetInstance() вместо Response.OutputStream:

string pdfPath = "c:\some-path\Panel.pdf";
PdfWriter.GetInstance(pdfDoc, new FileStream(pdfPath, FileMode.Create));
В зависимости от вашей настройки pdfPath может быть построен из пути карты сервера, временного каталога или абсолютного пути в файловой системе сервера.


shanifa S

Это не работает..любые другие предложения, пожалуйста..спасибо

Jochen Arndt

Что значит "не работает" означает? Все та же ошибка или еще одна?

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

Это реальный ответ на ваш вопрос "при преобразовании страницы .aspx в pdf отображается "доступ к path /C denied error"?":
Он отображается, потому что ваш экземпляр веб-сервера не имеет права писать в каталог "C:\", как и любое другое приложение. По умолчанию запись в этот каталог разрешена только системным и административным учетным записям.