Ротатива не работает, когда олицетворение включено на сервере - PullRequest
0 голосов
/ 17 января 2019

Я использую Rotativa для создания PDF из вида. Он работает на моем локальном хосте, но когда я нажимаю на свой сервер, он вообще не работает. На сервере включена проверка подлинности Windows и олицетворение, которые мне нужны для этого сайта.

Это ошибка, которую я получаю, когда пытаюсь запустить код на сервере

Qt: не удалось инициализировать OLE (ошибка 80070005) Ошибка: ошибка загрузки страница https://api.mydomain.com/Reports/RedBluePDF?community=CommunityName&procedure=GetTasks (иногда это будет работать просто, чтобы игнорировать эту ошибку с --load-error-processing игнорировать) Выход с кодом 1 из-за ошибки http: 1003

Вот мой код:

public byte[] getReportsPDF(string community, string procedure)
        {

            byte[] pdfBytes = new byte[] { };

            RouteData route = new RouteData();
            route.Values.Add("controller", "SiteSuperReports");
            route.Values.Add("action", "RedBluePDF");

            this.ControllerContext = new ControllerContext(new HttpContextWrapper(System.Web.HttpContext.Current), route, this);

            if (procedure == "GetProductionTasks")
            {

                var actionPDF = new Rotativa.ActionAsPdf("RedBluePDF", new { community = community, procedure = procedure })
                {
                    PageSize = Size.A4,
                    PageOrientation = Rotativa.Options.Orientation.Landscape,
                    PageMargins = { Left = 1, Right = 1 }
                };

                try
                {
                    pdfBytes = actionPDF.BuildFile(ControllerContext);
                }
                catch(Exception e)
                {
                    Console.Write(e.Message.ToString());
                }
            }

            return pdfBytes;
        }

А вот метод RedBluePDF, он просто возвращает представление:

public ActionResult RedBluePDF(string community, string procedure) {
     return View();
}

Что я делаю не так и почему это не работает на моем сервере, но на моем локальном хосте? И как мне заставить его работать на моем сервере.

1 Ответ

0 голосов
/ 22 января 2019

Попробуйте одно из следующих решений:

1- Перейдите в IIS> Сайт> Аутентификация, нажмите «Олицетворение ASP.NET» и отключите его.

2- Если вы вызываете скрипт, файл или что-то еще, укажите используемый протокол:

src="//api.mydomain.com/?????

до:

src="http://api.mydomain.com/?????

3- В конфигурации вашего пула приложений в разделе Модель процесса есть опция «Загрузить профиль пользователя». По умолчанию он имеет значение False, установите его как true.

...