Експортът на SSRS се проваля през VPN портал без клиент: какво се различава
Страницата на отчета доказва рендиране, не експорт. Проследете заявката за експорт през портала, сравнете заглавките и тялото, после ограничете всяко изключение тясно.
Отчетът се отваря в браузъра, параметрите се изобразяват, а бутонът за експорт дава грешка, празно изтегляне или файл, който електронната таблица отказва да отвори. Тази комбинация има стандартна форма. Работеща страница на отчет е проверила рендирането и удостоверяването и нищо друго. Експортът е отделна заявка със свой собствен отговор и през портал без клиент той също преминава през слой за пренаписване, който никога не е бил проектиран за изтегляне на файлове.
Два пътя, една работеща страница
Рендирането и експортът са различни операции, дори когато започват от един и същ бутон. Сървърът на отчети рендира страницата за браузър и подготвя експорта чрез различно разширение за изход със свой тип съдържание и собствено поведение при грешка, както описва документацията за експорт. Портал, който пропуска първото безупречно, все още може да развали второто, защото второто е отговор, който порталът не е очаквал да види. Двете споделят сесия и адрес и почти нищо друго.
Разглеждайте работещата страница само като доказателство за удостоверяване и достъпност. Тя доказва, че акаунтът може да достигне сървъра на отчети и че порталът препраща HTML. Тя не казва нищо за файлови отговори, заглавки за разположение на съдържанието или пренасочвания, които завършват с изтегляне, а не с документ.
Това е цялата причина да сравнявате пътя на експорта отделно, вместо да тествате отново страницата, която вече работи. Две заявки, които споделят сесия, пак са две заявки.
Три условия, които решават къде се чупи експортът
Три въпроса бързо поставят повредата на място и всеки отговор сочи към различен собственик.
Първо, експортира ли се същият отчет, акаунт и формат правилно от вътрешната мрежа? Ако да, сървърът на отчети и неговият рендер са наред и разликата е в пътя за достъп. Второ, носи ли неуспешният отговор файлов тип съдържание, или HTML страница с файлово разширение? Това разделя грешка на рендера от замяна от портала. Трето, пренаписва ли порталът URL адреса на заявката или премахва заглавки от отговора? Пренаписан URL адрес може да попадне на напълно различна крайна точка.
Отговорете на трите въпроса, преди да промените настройка, защото всяко има различно решение. Повреда на рендера принадлежи на сървъра на отчети, замененото тяло принадлежи на портала, а премахнатата заглавка е въпрос на политика, а не грешка.
Запишете отговорите. Заявка за поддръжка, изградена от тези три реда, струва десет екранни снимки.
Четете отговора на експорта, а не кода на състоянието
Успешният HTTP статус доказва само, че нещо е отговорило на заявката. Проверете тялото и заглавките заедно, защото интересната повреда е успешен отговор с грешно съдържание.
curl -sS -D export.headers -o export.bin --location "https://portal.example.com/reports/export?format=xlsx"
file export.bin
head -c 300 export.bin
Изхвърлянето на заглавки показва типа съдържание и всяко разположение на съдържанието, което порталът е върнал. Командата file идентифицира какво всъщност е тялото, а текстов файл там, където се очаква електронна таблица, е класическата подменена страница за вход. Командата head показва достатъчно, за да разпознаете HTML, без да изсипвате цял отчет в терминал.
Изтрийте сесийните бисквитки и токени, преди да споделите нещо от това. Запис на работещ експорт е полезно доказателство, а запис на сесия, принадлежаща на някой друг, е инцидент.
Ограничете изключението до приложението, не до акаунта
Ако порталът пренаписва или блокира отговора, изкушаващото решение е да освободите целия сайт или да направите отчета анонимен. И двете поправят изтеглянето и премахват причината порталът да съществува. Ограниченото изключение назовава един път на приложение, един тип съдържание и една посока и остава преглеждаемо от този, който притежава политиката.
Използвайте версията на шлюза, която действително изпълнявате, и неговите документирани настройки за приложения. Опция, която доставчик някога е описвал като оставяща трафика непроменен, не е обща инструкция и копирането ѝ от стара тема във форум е начинът, по който временно изключение става постоянна архитектура.
Ако изключението не може да се ограничи толкова тясно, експортът вероятно принадлежи на вътрешния път с различен метод за достъп, а не зад портала. Освобождаването на целия сайт е решение за собственика на портала, а не заобикаляне за един отчет.
Приемете експорта, не диалога за запазване
Последната проверка е самият файл: той се отваря, съдържа очакваните колони и сумите му съвпадат с отчета, който потребителят е одобрил.
Появата на диалог за запазване не е успех и файл, който се отваря с предупреждение за поправка, също не е успех. Сравнете броя на редовете и една известна стойност с отчета на екрана, защото отрязан експорт минава всеки тест, който гледа само размера на файла. След това експортирайте втори път, защото кеширащ слой, който веднъж е подал грешното тяло, може при следващия опит да подаде правилното.
Приемете работния процес, който потребителят е имал нужда, и нищо по-малко. Изтегляне, което се отваря в грешното приложение, все още е провален експорт.