クライアントのサーバーで Web サービスを実行しています。サーバー上のリモートデスクトップからアクセスしてパラメーターを入力すると、機能します。コンピューターからアクセスしてパラメーターを入力すると、機能します。コンピューターに接続されたハンドヘルド デバイスのアプリケーションからアクセスすると、Web メソッドがスローします。
{System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException:
Server was unable to process request. ---> System.Data.OracleClient.OracleException:
ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
デバイスはデータベースに接続していません。Web サービスを呼び出してパラメーターを渡すだけです。また、DB に接続せずにパラメーターをデバイスに返すだけのテスト メソッドも作成しましたが、渡されたパラメーターは問題ありません。
これは私を夢中にさせています。これがどのように可能かわかりません。誰でもアイデアはありますか?
編集:仕事のインターネットが死に、問題が明らかになりました。問題は、実際には、サービスのローカル開発バージョンがデバイスから呼び出されていることです。理由がわかりません。これは、サービス コンストラクターのコードです (SoapHttpClientProtocol から派生)。
public Service1() {
this.Url = "LOCAL (WRONG) URL";
}
このコードを実行すると:
server.Service1 s1 = new server.Service1();
s1.Url = "CLIENT (CORRECT) URL";
string test = s1.TestMethod(parameters);
最初の行の後の s1.Url はもちろん間違った URL です。2 行目以降の s1.Url が正しい URL です。しかし、3 行目は間違った開発サービスに接続しています。インターネットが停止し、クライアントのサーバーへの接続が失敗するはずだったにもかかわらず、機能し続けたため、これに気付きました...なぜこれが起こっているのかを理解しようとしています.