Попытка распечатать элемент управления ASP.NET Charting за кулисами в моем веб-приложении. Я думаю, что это проблема с разрешениями принтера, так как все в порядке до того момента, когда мой код вызывает:
chart.Printing.Print(false);
bool finished = false;
while (!finished)
{
finished = File.Exists(settings.GetValue("statusfile")); // file which indicates document was printed
System.Threading.Thread.Sleep(1000);
}
В этот момент страница просто замирает (или продолжает бесконечно загружаться - бесконечный цикл!) Понятно, что это происходит, потому что я на 100% полагаюсь на печатный документ. Я намерен добавить тайм-аут, однако в данный момент я просто пытаюсь выяснить, почему именно документ никогда не устанавливается на принтер!
Я дал учетной записи (под которой работает AppPool) разрешения для всех соответствующих папок и даже самого принтера PDF ... Все еще ничего.
Я что-то упустил? Есть ли проблемы с печатью на стороне сервера через ASP.NET? В прошлом я сталкивался с некоторыми проблемами при использовании WindowsServices, но не уверен, что это аналогичная проблема с веб-сайтами ASP.NET.
Обновление
Как и предполагалось, я обновил AppPool, чтобы дать себе (администратору) разрешения, и это та же проблема. Таким образом, судя по всему, работа никогда не отправляется на принтер. Кажется, я не могу понять, почему ...
Вероятно, следовало упомянуть об этом в моем первоначальном посте .... но я вызываю принтер через библиотеку DLL, на которую ссылаются, этот код не вызывается напрямую из моего приложения (если это имеет значение). Кроме того, это нормально работает на моей машине разработки, которая работает под управлением Windows 7 IIS7.0, где на сервере работает сервер Windows 2003 с IIS6.0.
Обновление 2
Я удалил цикл while и просто оставил в строке chart.Printing.Print(false)
и получается, что документ IS отправляется на принтер. Поэтому проблема должна быть в том, что файл настроек не записывается, поэтому цикл никогда не прерывается!