我有一个在我的Linux Suse 12.1 VPS服务器上运行的c#Soap服务。在我对soap服务进行了一些小改动并将其复制到我的VPS之前,这一直都没有问题。我认为这一定是我的更改的一个问题,所以我回滚了我的更改,仍然无法正常工作。甚至一些未被触及的方法都失败了。
然而,我已经在我的Dev机器上进行了测试,该机器在Windows上工作正常并且还将soap接口复制到linux开发机器上,该机器以我的VPS的确切方式设置,即OpenSuse 12.1和与我的VPS Web服务器具有相同的功能。两者都工作得很好,没有遇到任何问题。
然而,在VPS主机上,mod-mono-server不断崩溃,即使启动,也无法读取asmx文件,只显示服务器错误,我需要运行rcapache2 restart
才能获得测试页面加载。
在apache错误日志文件中,我有以下内容:
[Thu Aug 30 20:10:19 2012] [错误](70014)找到的文件结尾:read_data 失败[Thu Aug 30 20:10:19 2012] [错误]命令流已损坏, 最后一个命令是1 [Thu Aug 30 20:08:47 2012] [错误]命令流 损坏,最后一个命令是7
我不知道问题可能是什么,我尝试重新启动VPS,但没有区别。
我使用的是mod-mono-server的ASP.net 4版本。
感谢您提供的任何帮助。
更新1 我刚刚注意到apache错误中的其他内容。日志文件包含以下
[Thu Aug 30 20:46:31 2012] [notice] caught SIGTERM, shutting down
[Thu Aug 30 20:46:32 2012] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Thu Aug 30 20:46:32 2012] [error] Not running mod-mono-server.exe because no MonoApplications, MonoApplicationsConfigFile or MonoApplicationConfigDir specified.
更新2
刚刚做了一个发现,并不完全确定它是否有帮助。只要不需要访问mysql数据库,soap服务在服务器上运行正常。如果它执行查询,它会在测试页面中显示an internal server error 500
。但如果从PHP调用它会导致它崩溃单声道。该数据库是一个mysql数据库,是一个本地数据库。有34%的RAM免费,所以我不相信这是一个内存问题。我还清空了数据库表,以确定它是否修复了它是否与数据量有关,但这也没有修复它。
答案 0 :(得分:0)
感谢@knocte建议,我设法找出问题所在。
当Soap服务访问数据库时,它会读取一个config.xml来确定用于访问数据库的用户名和密码,我猜这个配置文件在传输过程中设法被破坏了。虽然我可以在vi中阅读它,但也许有一些错误的文件阻止了肥皂服务读取配置。
我所做的就是删除文件并手动将内容复制并粘贴到文件中。
由于某种原因,当mod-mono无法访问数据库时,它会崩溃单声道,即使soap服务中的所有MySQL内容都有MySQL异常处理。 @knocte测试soap服务的建议证明是有用的,因为当它用于从soap服务访问数据库时xsp4会停止但显示错误,说它没有访问数据库的权限,即使它具有正确的用户名和配置文件中的密码。
重新创建配置文件后,soap服务再次正常工作。
感谢您的帮助。