Внутренняя ошибка сервера с web.config ipSecurity

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

Сначала мы попытались с помощью PDF.JS из-за предложения @lubos hasko: Нам удалось использовать Base64 со зрителем. Это работало в Firefox и Chrome. Но это было очень медленно. IE / Edge вообще не работал для нас.

Отображение строки PDF-Base64 в теге-объекте не работало для нас в браузере Microsoft (IE / Edge), но очень хорошо Chrome / Firefox / Safari. Поэтому для IE11 / Edge мы использовали IFrame для отображения потока PDF. Он работает хорошо, и усилия по техническому обслуживанию поддерживаются в пределах. Для IE9 / IE10 мы просто отправляем файл в виде загружаемого потока, потому что он не очень хорошо работает с этими браузерами в сочетании с iframe. У пользователя нет возможности показывать pdf-файл в виде модального окна, который подходит для количества наших клиентов, которые используют эти браузеры (около 1%). Вы можете найти наше решение для загрузки здесь: Загрузите PDF без обновления с IFrame .

Причина, по которой мы не используем решение IFrame для всех браузеров, заключается в том, что хотя PDF-файл отображается правильно во всех наших проверенных браузерах, Chrome делает другой запрос к серверной функции, как только вы хотите загрузить PDF-документ в Chrome-PDF Reader. Спрятанное поле pdfHelperTransferData больше не задано, потому что PDF отображается в IFrame, поэтому параметр на стороне сервера - null . Для этой «функции / ошибки» см. Этот Chrome отправляет два запроса при загрузке PDF (и отменяет один из них) .

Наш Javascript

if (isMicrosoftBrowser()) {
        // Case IE / Edge (because doesn't recoginzie Pdf-Base64 use Iframe)
        var form = document.getElementById('pdf-helper-form');
        $("#pdfHelperTransferData").val(transferData);
        form.target = "iframe-pdf-shower";
        form.action = "serverSideFunctonWhichWritesPdfinResponse";
        form.submit();
 } else {
        // Case non IE use Object tag instead of iframe
        $.ajax({
            url: "serverSideFunctonWhichRetrivesPdfAsBase64",
            type: "post",
            data: { downloadHelperTransferData: transferData },
            success: function (result) {
                $("#object-pdf-shower").attr("data", result);
            }
        })
 }

Наш HTML




Чтобы проверить наличие Microsoft-браузера для экземпляра: Как я могу обнаружить Internet Explorer (IE) и Microsoft Edge с помощью JavaScript? Я надеюсь, что эти результаты сохранят кто-то еще некоторое время.

13
задан Sruthi 25 April 2013 в 17:12
поделиться