Мы используем ExpertPDF, чтобы брать URL-адреса и превращать их в PDF-файлы. Все, что мы делаем, это через память, поэтому мы формируем запрос, затем читаем поток в ExpertPDF и затем записываем биты в файл. Все файлы, которые мы запрашивали до сих пор, представляют собой простые HTML-документы. Наши дизайнеры обновляют файлы CSS или меняют HTML и запрашивают документы как PDF-файлы, но часто вещи кэшируются. Возьмем, к примеру, если я переименую единственный CSS-файл и просматриваю HTML-страницу через веб-браузер, страница выглядит испорченной, потому что CSS не существует. Но если я запрашиваю эту страницу через PDF Generator, она все равно выглядит нормально, что означает, что где-то кешируется CSS. Вот соответствующий код создания PDF:
// Create a request
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.UserAgent = "IE 8.0";
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "GET";
// Send the request
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
if (resp.IsFromCache) {
System.Web.HttpContext.Current.Trace.Write("FROM THE CACHE!!!");
} else {
System.Web.HttpContext.Current.Trace.Write("not from cache");
}
// Read the response
pdf.SavePdfFromHtmlStream(resp.GetResponseStream(), System.Text.Encoding.UTF8, "Output.pdf");
Когда я проверяю файл трассировки, из кеша ничего не загружается. Я проверил файл журнала IIS и обнаружил ответ 200 на запрос, даже после обновления файла (я ожидал 302). Мы пытались поместить атрибут No-Cache на все HTML-страницы, но все же не повезло. Я даже отключил все кэширование на уровне IIS. Есть ли в ExpertPDF что-нибудь, что может где-то кэшироваться или что-то, что я могу сделать с объектом запроса, чтобы выполнить полное обновление всех ресурсов?
UPDATE
Я ставлю? Foo в конце моих ссылок в стиле href, и это обновляет CSS каждый раз. Есть ли где-нибудь параметр, который может предотвратить кэширование таблиц стилей, поэтому мне не нужно делать это не элегантное решение?