我正在制作一个 php/c# 控制台应用程序/c#soap 服务,并且我在 Web 服务中创建了许多函数,但我无法调用其中一个。
我正在调用的函数是一个从数据库中获取字符串值的函数。该调用在 Windows 上运行良好(使用 localhost),但是当将它放到在单声道下运行的 Linux 服务器上时,我得到一个异常,说明如下:
函数(“getLastResetTime”)不是此服务的有效方法
奇怪的是,从 Linux 服务器我可以通过转到 asmx 文件并运行 getLastResetTime 函数来访问测试表单,它返回了预期的内容,这似乎是 PHP 无法进行调用。
下面是我在 PHP 中用来调用脚本的代码
function getLastResetTime()
{
include ("../../config.php");
include ("../../includes/get-settings.php");
include ("../../includes/general.php");
try
{
$client = new SoapClient("http://192.168.1.74/EmailServer/EmailSoapService/EmailSoapService.asmx?WSDL", array("trace" => 1, "exception" => 0));
$result = $client->__soapCall("getLastResetTime", array());
echo "Last Reset: " . $result->getLastResetTimeResult;
}
catch (Exception $e)
{
echo $e->getMessage();
}
}
下面的截图证明了 web 方法在 Mono 下工作以及它返回的内容
下面是网络服务功能的代码
[WebMethod(Description = "Gets the time the Email Server last reset")]
public string getLastResetTime()
{
SoapHandler soapHandler = new SoapHandler();
return soapHandler.getLastResetTime();
}
以下是 Web 服务调用的代码
public string getLastResetTime()
{
try
{
using (ConnectDb db = new ConnectDb(appSettings))
{
string query = "SELECT * FROM settings";
using (MySqlCommand cmd = new MySqlCommand(query, db.conn))
{
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
if (reader.GetString("setting") == "app_lastRestart")
{
return reader.GetString("value");
}
}
}
}
}
return "N/A";
}
catch (MySqlException ex)
{
return ex.Message;
}
}
我不明白为什么这不起作用,我猜我可能错过了一些非常简单但找不到的东西。
感谢您的任何帮助,您可以提供。