.NET CoreでSOAPを行う方法.Net Coreに Apache CXF と同等のものはありますか(単純なSOAPクライアントだけでなく、フル機能のスタック)?
これが非常に基本的な質問である場合は申し訳ありませんが、これまでの検索では明確な答えは得られません。
マイクロソフトは現在、.NET Core用のSOAPサーバー側フレームワークを出荷する予定はありません。WCFServiceHostもASMXも使用できません。そして支配的なプレイヤーになります。
ASP.NET Web APIの導入とRESTエンドポイントの蜂起により、WCFは死んでいました。WCFクライアントは相互作用のストーリーであり、今後のストーリーではありません(詳細はこちら: http://blog.tonysneed.com/2016/01/06/wcf-is-dead-long-live-mvc-6/ )
数か月前、WCFクライアントが持つ制限のために(Java Webサービスと統合する場合、誰かがメソッドと同じ名前で同じ名前空間に、WCFクライアントはリクエストを送信していましたが、シリアル化に失敗しました-SOで関連する質問が見つかりません)HttpClientにアンダーラインを使用するSOAP HTTPクライアントを作成しなければなりませんでした。 ( https://github.com/gravity00/SimpleSOAPClient )本番環境で正常に使用され、.NET CoreおよびXamarinアプリケーションをサポートしています。お気軽に試してみてください。バージョン2.0.0をお勧めします-RC03。バージョン1.x以降のいくつかの主要な改善による。
VS 2017では、17年12月(v15.5)から、Connected Servicesを使用する.NET StandardプロジェクトからWSDLを使用して、生成されたWCFクライアントをサービスに追加できるようになりました。ソリューションエクスプローラーで、[依存関係]を右クリックするか、[追加...]の下のプロジェクトを右クリックしてそこにアクセスできます。
ここでは、ASP.Net 5.0 Web Appでターゲティング"framework 452"を使用したちょっとしたトリックがあります。
残念ながら、新しい"接続されたサービスの追加"-> "WCFサービス"は、"。Net Core"をターゲットにした場合にのみ機能するため、基本的なコンソールアプリを作成しました。 Webアプリ。
コンソールアプリでは"サービスリファレンス"を追加できます。追加すると、VS2015フォルダーにすべてのサービス参照が作成されます"Service References"。
フォルダーの内容をWebソリューションに移動し、HttpBindings
およびEndPoint
parametersを受け入れるクライアントコンストラクターを使用するだけです。
私の場合、次のようにEchosignサービス初期化クライアントに接続しています。
using (EchoSignDocumentService16PortTypeClient service = new EchoSignDocumentService16PortTypeClient(new BasicHttpBinding(BasicHttpSecurityMode.Transport), new EndpointAddress(adddress)))
{
...
}
レガシークライアント用にSOAPが必要なため、別個のSOAP .NETフレームワークを使用して、レガシークライアントと互換性のあるライブラリを作成しました。環境(SOAP.mywebsite.com)。その後、www.mywebsite.com(asp.net Coreで作成)に残りのインターフェイスがあります。SOAPレイヤーは残りのインターフェイスを呼び出します。ライブラリ残りのインターフェイスを呼び出すには、Swashbuckleを使用して生成されます。
この問題を回避するには、.NET 4.5でネイティブSOAPクライアントが.NET Coreでサポートされていないクライアントに接続します。次に.NETコアアプリケーションを作成しました。 net framework。これにより、nugetパッケージをエラーなしで使用できました。