LocalReport (WebForms) и частичное доверие, для создания PDF - PullRequest
0 голосов
/ 30 декабря 2010

Моя цель - создать PDF-файл для отображения на веб-странице в формате aspx или с помощью стандартного обработчика.(Это будет ссылка со страницы Silverlight, но это не имеет отношения к проблеме.)

Проблема в том, что LocalReport (Microsoft.Reporting.WebForms; Microsoft.ReportViewer.WebForms.dll) требует полного доверия, и нашхостинг-сервер не допускает полного доверия.Мне известно, что ReportViewer имеет удаленный режим, который позволяет ему работать с частичным доверием, но для этого мне нужен URL-адрес сервера отчетов, который также должен иметь полное доверие, что ничего не решает.

ИтакКак создать PDF-файл из WebForms (отчеты RDLC) в среде с частичным доверием?

РЕДАКТИРОВАТЬ: Я использую C # 3.5 с VS 2008.

Ответы [ 3 ]

1 голос
/ 30 декабря 2010

Вы должны уточнить у своей хостинговой компании, какая библиотека для создания PDF установлена ​​в их системе, и использовать ее.

Я не проверял себя в среде среднего доверия, но некоторые люди добились успеха в Medium Trust с этим проектом с открытым исходным кодом: http://sourceforge.net/projects/itextsharp/

Cheers, Stefan

Обновление

private LocalReport CreateReport()
{
    LocalReport myReport = new LocalReport();
    myReport.ReportPath = "Report1.rdlc";

    // Insert parameters if needed
    ReportParameter myParam = new ReportParameter("MyParamName", "myParamValueAsString");

    myReport.SetParameters(new ReportParameter[] { myParam });

    return myReport;
}
You can call the function to create the PDF:



//Create new pdf file
Byte[] mybytes = CreateReport().Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings);

А mybytes можно выписать с помощью Response для скачивания ..

0 голосов
/ 04 января 2011

Если я не получу больше ответов для решения проблемы, это будет лучший обходной путь:

Я связался с хост-сервером, и у них есть отдельный сервер, который разрешает доступ к Microsoft.ReportViewer (возможно, работает полностьюдоверие), но за дополнительную плату.

0 голосов
/ 03 января 2011

Используете ли вы .NET 4 на сервере или предыдущую версию?Я полагаю (основываясь на этой странице справки в MSDN: http://msdn.microsoft.com/en-us/library/microsoft.reporting.webforms.localreport.executereportinsandboxappdomain.aspx), что элемент управления ReportViewer всегда выполняется в изолированном домене приложения. Хотя для предыдущих версий (или когда вы используете LegacySecurityPolicy), вам нужно явно указать, что отчетзритель должен сделать это, вызвав метод ExecuteReportInSandboxAppDomain для объекта LocalReport. Не знаю точно, но это может решить вашу проблему.

...