Вход в Sitecore Extranet и конвертер PDF или Webclient - PullRequest
1 голос
/ 03 июня 2011

У меня возникла проблема с использованием Winnovatives PDFConverter на страницах, которые защищены безопасностью экстрасети (которая основана на членстве в ASP.Net).

Я пробовал несколько разных подходов, но следующее я могуприступить к работе на моем локальном компьютере, но не где-либо еще.

Код для страницы входа в систему, этот код должен обойти процесс входа в систему для:

 // check that the current "user" isn't logged in and is the Winnovative UserAgent
 if (!Sitecore.Context.IsLoggedIn && Request.UserAgent.Contains(".NET CLR"))
        {
            //Login with a dummy user I've created
            Sitecore.Security.Authentication.AuthenticationManager.Login("extranet\\pdf", "pdf", true);
            //redirect to former page
        }

Страница, которая генерирует PDF, использует этоcode: private void PDFPrint (string url) {

        PdfConverter pdfConverter = new PdfConverter();           

        pdfConverter.LicenseKey = "our license";            

        url = Request.Url.Scheme + "://" + Request.Url.Host + url;
        byte[] downloadBytes = pdfConverter.GetPdfFromUrlBytes(url);

        HttpResponse response = HttpContext.Current.Response;
        response.Clear();
        response.AddHeader("Content-Type", "binary/octet-stream");
        response.AddHeader("Content-Disposition", "attachment; filename=" + Sitecore.Context.Item.Name + ".pdf" + "; size=" + downloadBytes.Length.ToString());
        response.Flush();
        response.BinaryWrite(downloadBytes);
        response.Flush();
        response.End();
    }

Исключением, которое я получаю, является следующее:

"Не удалось получить метафайл из URL. Не удалось получить изображение из URL.URL недоступен .. "

Я также попробовал этот трюк из FAQ по Winnovative безрезультатно: http://www.winnovative -software.com / FAQ.aspx # аутентификация Q

Я также пытался использовать WebClient или HttpWebRequest для извлечения контента.

Но кажется, что ничего, что я делаю, не работает, кроме как локально.

По сути, я хочу создать способлибо получить конвертер Winnovatives виспользуйте текущего вошедшего в систему пользователя, моего пользовательского пользователя "pdf" или другого способа получить html из ответа.

Я надеюсь, что этот вопрос не слишком расплывчат, но мне сложно его задать.Но в основном я хочу получить html-контент со страницы в контролируемом мной решении Sitecore, которое защищено обычной защитой экстрасети Sitecore.Это HTML-содержимое должно иметь формат строки или байта [].

Помогите мне, Stackoverflowers, вы моя единственная надежда!: P

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Я связался с Sitecore, чтобы спросить, есть ли у них решение.

Их решение состояло в том, чтобы создать Процессор, который установил бы активного пользователя на основе некоторых критериев.

Это код, который я сделал для своего сайта (вероятно, это не лучшее решение, так как UserAgent может быть подделан):

public class MyResolver : HttpRequestProcessor
    {
        // Methods
        public override void Process(HttpRequestArgs args)
        {

            var userAgent = args.Context.Request.UserAgent ?? "";
            SiteContext site = Sitecore.Context.Site;
            if (site.Name == "site_name_in_webconfig" && userAgent.Contains("this_should_only_be_in_thepdfcreators_userAgent"))
            {
                Sitecore.Security.Accounts.User pdfuser = Sitecore.Security.Accounts.User.FromName("extranet\\theUser", true);
                AuthenticationManager.SetActiveUser(pdfuser);
            }

        }
    }

и затем добавьте следующее в web.config перед UserResolver:

<processor type="Namespace.MyResolver, Assembly" />

Я надеюсь, что это поможет некоторым другим там.

1 голос
/ 03 июня 2011

Я обнаружил похожую проблему на форумах ASP.NET, и ответом на нее было использование более новой версии инструмента PDF: SessionState Проблемы?

...