Как и многие люди, я видел такого рода поведение. Это вызвано использованием API-интерфейсов Office на сервере, особенно в многопоточном приложении ASP.NET.
Однако вы сказали, что не хотите знать о том, чтобы не выстрелить себе в ногу, так что есть немного больше, чтобы сказать. Вы, кажется, оказались в ловушке последствий прежней глупости.
ОК, остановите меня, если вы слышали этот один:
Человек задает вопрос о StackOverflow. Он говорит: «О, плохие вещи случаются, когда я автоматизирую приложение Office изнутри службы». Итак, Джон Сондерс говорит: «Итак, не автоматизируйте приложение Office изнутри службы. Автоматизируйте его из настольного приложения, как и собиралась сделать Microsoft».
Когда приходит запрос на то, что требует Excel, вы должны создать процесс, работающий под управлением приложения Windows Forms. Приложение может запускаться без окна, или вам может потребоваться запустить его в контексте подключения Удаленный рабочий стол . В любом случае задача, которую нужно выполнить, может быть передана в качестве параметра командной строки, или программа может разместить службу WCF для отправки ей команд.
Эта программа может вызывать Excel точно так же, как Excel ожидает вызова. Возможно, он даже может обрабатывать более одной команды в Excel (по одной за раз). Однако, если он зависает, процесс может быть остановлен, а другой запущен.
Я никогда не пробовал этого, но, похоже, это будет работать лучше, чем пытаться заставить Office Automation сделать то, для чего он не предназначен.