Webreport + параметры = обращения к Wwwroot
Здравствуйте! Возникла следующая проблема:
исходные данные:
- webreport [v. 1.2.53]
- параметризированный отчет (содержит одну тектовую надпись и два Int32 параметра)
- хостинг - IIS 6.0
проблема: на событии Page_Load метод Report::Prepare() выбрасывает исключение 'Access to the path 'C:\Inetpub\wwwroot\vf01' is denied.'
анализ проблемы: запускаем FileMon и видим следующее
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\Bin\ ACCESS DENIED Attributes: Error
OPEN C:\Inetpub\wwwroot\vf01\ ACCESS DENIED STEND-NOV\IUSR_STEND-NOV
OPEN C:\Inetpub\wwwroot\vf01\ ACCESS DENIED STEND-NOV\IUSR_STEND-NOV
решение проблемы: разрешаем доступ к папке C:\Inetpub\wwwroot\vf01 пользователю STEND-NOV\IUSR_STEND-NOV
итог: все работает В чем причина такого поведения? Опять смотрим в FileMon:
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\Bin\ SUCCESS Attributes: D
OPEN C:\Inetpub\wwwroot\vf01\Bin\ SUCCESS Options: Open Directory Access: 00100020
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\Bin SUCCESS Attributes: D
OPEN C:\Inetpub\wwwroot\vf01\Bin SUCCESS Options: Open Directory Access: 00100020
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\Bin\csc.exe NOT FOUND Attributes: Error
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\bin\rsaenh.dll NOT FOUND Attributes: Error
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\bin\rsaenh.dll NOT FOUND Attributes: Error
CLOSE C:\Inetpub\wwwroot\vf01\Bin SUCCESS
?? не понятно зачем происходит обращение к криптосборке rsaenh и почему именно по этому пути?!
Спасибо.
PS на непараметризированном отчете проблема не возникает
исходные данные:
- webreport [v. 1.2.53]
- параметризированный отчет (содержит одну тектовую надпись и два Int32 параметра)
- хостинг - IIS 6.0
проблема: на событии Page_Load метод Report::Prepare() выбрасывает исключение 'Access to the path 'C:\Inetpub\wwwroot\vf01' is denied.'
анализ проблемы: запускаем FileMon и видим следующее
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\Bin\ ACCESS DENIED Attributes: Error
OPEN C:\Inetpub\wwwroot\vf01\ ACCESS DENIED STEND-NOV\IUSR_STEND-NOV
OPEN C:\Inetpub\wwwroot\vf01\ ACCESS DENIED STEND-NOV\IUSR_STEND-NOV
решение проблемы: разрешаем доступ к папке C:\Inetpub\wwwroot\vf01 пользователю STEND-NOV\IUSR_STEND-NOV
итог: все работает В чем причина такого поведения? Опять смотрим в FileMon:
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\Bin\ SUCCESS Attributes: D
OPEN C:\Inetpub\wwwroot\vf01\Bin\ SUCCESS Options: Open Directory Access: 00100020
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\Bin SUCCESS Attributes: D
OPEN C:\Inetpub\wwwroot\vf01\Bin SUCCESS Options: Open Directory Access: 00100020
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\Bin\csc.exe NOT FOUND Attributes: Error
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\bin\rsaenh.dll NOT FOUND Attributes: Error
QUERY INFORMATION C:\Inetpub\wwwroot\vf01\bin\rsaenh.dll NOT FOUND Attributes: Error
CLOSE C:\Inetpub\wwwroot\vf01\Bin SUCCESS
?? не понятно зачем происходит обращение к криптосборке rsaenh и почему именно по этому пути?!
Спасибо.
PS на непараметризированном отчете проблема не возникает
Комментарии
Можно взглянуть на стек ошибки?
test.FastReport.ApplicationPage.dll!test.FastReport.ApplicationPage.ApplicationPage.LoadReport(test.FastReport.ApplicationPage.FastReportParamsBox paramsBox = {ASP._controltemplates_test_fastreport_fastreportparamsbox_ascx})
test.FastReport.ApplicationPage.dll!test.FastReport.ApplicationPage.ApplicationPage.OnLoad(System.EventArgs e = {System.EventArgs})
Код:
class ApplicationPage : LayoutsPageBase
{
..
private global::FastReport.Report report;
..
protected override void OnLoad(EventArgs e)
{
try
{
// ! Событие OnLoad возникает при загрузке страницы и каждый раз при загрузке служебных картинок контрола webTestReport1.
// Отсекем обращения, вызванные загрузкой картинок.
if (Request.QueryString["frxbtn"] == null)
{
report = LoadReport();
// далее используем report для отображения списка параметров.
}
}
catch {}
}
global::FastReport.Report LoadReport()
{
try
{
global::FastReport.Report report = new Report();
..
// Загружаем отчет, определяем источники данных.
..
report.Prepare(); // !! ERROR 'Access to the path 'C:\Inetpub\wwwroot\vf01' is denied.'
return report;
}
catch (Exception ex) { }
return null;
}
void webTestReport1_StartReport(object sender, EventArgs e)
{
try
{
(sender as global::FastReport.Web.WebReport).Report = report;
}
catch (Exception ex) { }
}
}
По поводу режима:
Прописан - <trust level="WSS_Minimal" originUrl="" /> - это режим по умолчанию для Sharepoint (см. приложенный файл wss_minimaltrust.config.txt, описывающий данный режим).
Отмечу, что сборка с кодом располагается в GAC.
документация по FastReport - это моя настольная книга.
Тем не менее не понятен смысл обращений отчета к 'C:\Inetpub\wwwroot\vf01\Bin\csc.exe' и к 'C:\Inetpub\wwwroot\vf01\bin\rsaenh.dll' Судя по логам FileMon именно это и вызывает ошибку доступа.
К тому же на тестовом отчете с параметрами, которые не используются в выражениях и тд, происходит такая же проблема
PS значит придется разрешать эту проблему путем принудительного разрешения доступа к папке ''C:\Inetpub\wwwroot\vf01' для гостевого пользователя ASP.