2012-03-25 61 views
2

我讓我的服務器端代碼,這是服務於一個Silverlight應用程序的異常沒有這樣的接口,什麼做支持的平均

Win32Exception - 支持

我們的服務器端沒有這樣的接口由於第三方dll不是線程安全的,C#代碼爲短任務啓動一個單獨的進程。因此,上述錯誤發生在這樣的代碼的一部分,

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 

但過程監控不顯示任何信息,爲什麼第一種情況下是行不通的。

有沒有一種方法,我可以看到爲什麼線程過早退出?

另外我認爲這個問題涉及到我的服務器被加載的時間越來越多,以及更多的內存被使用。我怎樣才能證明這一點?

+0

最有可能的錯誤從「PreviewGenerator.exe」操作彈出,但你只需要調試,並提供代碼的異常是在拋出一個準確的線。 – 2012-03-25 21:37:22

+1

會很難回答。嘗試添加完整的錯誤信息。此外,事情已經改變。找出什麼。最近更新等。 – 2012-03-25 21:37:37

+0

我已根據您的回覆進行更新。 – peter 2012-03-25 21:49:07

回答

1

我發現最好的做法是在IIS中爲我的應用程序創建一個單獨的應用程序池,併爲它可以使用的RAM數量設置一個上限。此外,我發現打開應用程序池設置下的「生成回收事件日誌條目」項也很有用。

然後,您可以轉至系統事件日誌並使用「WAS」來源過濾出項目,以瞭解應用程序池中發生了什麼,重啓時以及何時停止閒置等。

我認爲我們的情況中的主要問題是IIS盒內存不足。調整應用程序池並添加一些額外的RAM似乎解決了它。

+0

謝謝你,一個很好的答案,幫助我解決同樣的問題。 – 2015-06-18 12:44:36