我的网络服务将使用print2flash软件将文档,文本和pdf文件转换为flash文件,但是它在大约2000个请求之后工作正常,因为它没有进行,我正在获取操作超时错误消息。如果我重新启动机器服务工作正常另外2000个请求。 任何人都可以帮助我,原因是什么?以及如何解决这个问题?
这是我的代码,我遇到了问题。
Print2Flash3.Server2 obj = new Print2Flash3.Server2();
Print2Flash3.BatchProcessingOptions batchProcess = new BatchProcessingOptions();
batchProcess.BeforePrintingTimeout = 60000;
batchProcess.AfterPrintingTimeout = 10000;
batchProcess.PrintingTimeout = 120000;
batchProcess.ActivityTimeout = 30000;
batchProcess.KillProcessIfTimeout = ThreeStateFlag.TSF_YES;
batchProcess.ApplyChanges();
obj.ConvertFile(inputFilename, outputFullPath, null, batchProcess, null);
这是我的错误日志信息
User Profile Service已成功启动。
Windows Management Instrumentation Service成功启动
事件代码:3001事件消息:请求已中止。事件 时间:10/31/2013 12:15:25 PM活动时间(UTC):2013年10月31日下午12:15:25 事件ID:c0911a4071c940c580fc3d75d3c36f6e事件序列:2826 事件发生:1事件详细信息代码:0应用程序信息: 应用领域:/ LM / W3SVC / 1 / ROOT / code-17-130276759869328000 信任等级:完整 应用程序虚拟路径:/ code 应用程序路径:C:\ inetpub \ wwwroot \ code \ 机器名称:服务器进程信息: 进程ID:1048 进程名称:w3wp.exe 帐户名称:server \ Administrator异常信息: 异常类型:HttpException 异常消息:请求超时。
Request information: Request URL: url Request path: path User host address: server User: Is authenticated: False Authentication Type: Thread account name: server\Administrator Thread information: Thread ID: 13 Thread account name: server\Administrator Is impersonating: False Stack trace:
这是我不断收到的错误消息。
答案 0 :(得分:1)
这也有几个原因Kirk Woll增加了一些好处。
1.可能存在无限循环导致服务挂起 防爆。异常处理方法为异常处理调用相同的方法。 检查EventViewer中的EventLogs以获取这些错误。
2.Memory泄漏,可能是您的应用程序在使用后未释放内存。 关闭所有不需要的连接,在完成工作后处理未使用的对象。 尝试任何内存泄漏工具<强>建议:强> 如果上述两种情况失败,那么您可以自动回收服务的应用程序池。
修改强>
尝试以下方法。
obj.ConvertFile(inputFilename, outputFullPath, null, batchProcess, null);
//not sure if your object has similar methods or not but you can give it a try.
obj.Close();
obj.Dispose();
或使用使用风格。
using(Print2Flash3.Server2 obj = new Print2Flash3.Server2())
{
Print2Flash3.BatchProcessingOptions
batchProcess = new BatchProcessingOptions();
batchProcess.BeforePrintingTimeout = 60000;
batchProcess.AfterPrintingTimeout = 10000;
batchProcess.PrintingTimeout = 120000;
batchProcess.ActivityTimeout = 30000;
batchProcess.KillProcessIfTimeout = ThreeStateFlag.TSF_YES;
batchProcess.ApplyChanges();
obj.ConvertFile(inputFilename, outputFullPath, null, batchProcess, null);
}
<强> EDIT2:强>
obj.ConvertFile(inputFilename, outputFullPath, null, batchProcess, null);
obj = null; //As the object is not disposable, you need to release the memory
//manually.
如果 Print2Flash3.Server2 是自定义类,则从IDisposable接口派生它并实现Dispose method。
public class Server2 : IDisposable
{
....
....
public void Dispose()
{
this = null;
}
}