Что не означает, что такой интерфейс не поддерживается - PullRequest
3 голосов
/ 26 марта 2012

Я получаю исключение для своего кода на стороне сервера, который обслуживает приложение silverlight,

Win32Exception - такой интерфейс не поддерживается

Наш код C # на стороне сервера запускает отдельный процесс для короткой задачи из-за того, что сторонний dll не является потокобезопасным. Таким образом, приведенная выше ошибка возникает в части кода, подобной этой,

Process process = new Process();

ProcessStartInfo processStartInfo = new ProcessStartInfo();

processStartInfo.CreateNoWindow = true;
processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;

processStartInfo.FileName = 
    Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin", "PreviewGenerator.exe");

process.StartInfo = processStartInfo;

process.Start(); // THIS IS WHERE THE EXCEPTION OCCURS
process.WaitForExit();

Процесс PreviewGenerator.exe не запускается, когда он не работает, исключение происходит, когда комментарий выше.

UPDATE:

Я запустил монитор процесса на сервере IIS при возникновении проблемы. Это показывает, что процесс w3wp делает это,

Thread Create
Access the file PreviewGenerator.exe
Hive unloaded (this is the registry)
Thread Exit

И он делает это до вызова другого процесса. Если я сравниваю это с журналом монитора процесса, когда он работает, он делает это,

Thread Create
Access the file PreviewGenerator.exe
Process Start
Does heaps of stuff with PreviewGenerator.exe including reading / writing / registry, etc.
Process Exit
Hive unloaded
Thread Exit

Но монитор процесса не показывает никакой информации о том, почему первый случай не работает.

Есть ли способ узнать, почему нить преждевременно завершается?

Также я думаю, что эта проблема связана с тем, что мой сервер загружается больше и используется гораздо больше памяти. Как я могу доказать это?

Ответы [ 2 ]

2 голосов
/ 21 ноября 2012

У меня была похожая проблема, я использовал processStartInfo.UseShellExecute = false;и это исправило это для меня.

http://www.progtown.com/topic31343-process-start-processstartinfo-startinfo.html

1 голос
/ 03 апреля 2012

Я обнаружил, что лучше всего создать отдельный пул приложений для моего приложения в IIS и установить верхний предел для объема ОЗУ, которое он может использовать.Также я считаю полезным включить элементы «Сгенерировать повторную запись в журнале событий» в настройках пула приложений.

Затем можно перейти в журнал системных событий и отфильтровать элементы с источником «WAS».чтобы понять, что происходит в пулах приложений, когда они перезагружаются и когда они перестают бездействовать и т. д.

Я думаю, что основная проблема в нашем случае заключается в том, что в окне IIS не хватает памяти.Настройка пулов приложений и добавление дополнительной оперативной памяти, похоже, решили эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...