1

背景: Oracle データベースにクエリを実行する ASP.NET で記述された Web サービスを呼び出しています。他のアプリケーションの前に Web サービスを使用したことがあるので、Web サービス自体が機能することは知っています。そのため、Visual Studio に Web アプリケーションがあり、テストのために「DEV」Web サービスから同じ Web サービスの運用構成バージョンに切り替えるように切り替えてきました。「DEV」構成の Web サービスを指すことは問題ありませんが、製品バージョンを呼び出すと、サービスの呼び出しで常に例外が発生します。

SoapException was unhandled by user code
Server was unable to process request. ---> could not execute query
[ SELECT this_.FIELD1 as FIELD1_18_0_, this_.FIELD2 as FIELD12_18_0_ FROM ABC.TABLE_A this_ WHERE this_.FIELD1 like :p0 ORDER BY this_.FIELD1 asc ]
Positional parameters:  #0>00073%
[SQL: SELECT this_.FIELD1 as FIELD1_18_0_, this_.FIELD2 as FIELD12_18_0_ FROM ABC.TABLE_A this_ WHERE this_.FIELD1 like :p0 ORDER BY this_.FIELD1] ---> ORA-12571: TNS:packet writer failure

適切なデータベースに対して SQL クエリを実行したところ (例外メッセージから直接切り取って貼り付けたもの)、クエリは期待どおりのデータを返しました。Web サービス参照を「サービス参照」(.NET 3.0+ の方法) と「Web 参照」(古い .NET の方法) の両方として更新して再追加しようとしましたが、どちらも同じエラーが発生します。

質問: では、「ORA-12571: TNS: パケット ライター エラー」エラーは、Web サービスのコンテキストで何を意味しますか? Oracle エラー番号を調べると、「ケーブル接続の緩み」や「IP アドレスの競合」など、非常に漠然とした原因が考えられます。現在、別のアプリケーションがその Web サービスを正常に使用しているため、これらのいずれでもないことは確かです。おそらく何らかの構成エラーか、それとももっと微妙な何かでしょうか? この厄介なOracleエラー番号がWebサービス関連の何かに起因しているのを見た人はいますか?

4

2 に答える 2

1

あなたの呼び出しは、ws クライアントから ws サーバー、そして oracle データベースに行きます。

エラーは、データベースによって生成される ORA エラーです。したがって、問題はおそらく ws サーバーとデータベースの間にあります。

「適切なデータベースに対する SQL クエリ」を実行したとき、Web サーバーから実行しましたか? そうでない場合は、それを試してください。同じ接続構成を使用していることを確認してください。

編集

以下のコメントによると、実際の問題はドライバーの不一致でした。

于 2009-10-17T18:31:42.947 に答える
1

これは明らかにデータベースとの Web サービス対話のエラーであり、w/s 呼び出し元から完全に独立している必要があるため、仮定をより慎重に再検討することをお勧めします。

w/s 呼び出しがこの特定の例外を生成している場合は、他のすべての呼び出しでも生成されているはずです。そのため、Web サービスを正常に使用している「他のアプリケーション」が同じコードを実行していないか、外的要因が働いているだけです。

いずれにせよ、サービスの登録方法や呼び出し方法とは関係ありません。

于 2009-10-17T18:20:10.010 に答える