php / c#コンソールapp / c#SOAPサービスを作成していて、Webサービス内に多くの関数を作成しましたが、そのうちの1つを呼び出すことができません。
私が呼び出している関数は、データベースから文字列値を取得する関数です。この呼び出しはWindows(localhostを使用)では正常に機能しますが、monoで実行されている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で機能していることと、それが返すものを証明しています。
以下はWebサービス機能のコードです
[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;
}
}
なぜこれが機能しないのかわかりません。おそらく本当に単純なものが欠けているのではないかと思いますが、それを見つけることができません。
あなたが提供できるどんな助けにも感謝します。