ASP.Net Webサービスで出力形式を制御する方法
-
05-07-2019 - |
質問
ColdFusionで記述されたレガシーアプリからASP.Net Web Formsアプリケーションに切り替えます。 1つの要件は、レガシーWebサービスを移行することです。アドレスは変更できますが、入力と応答の形式は同じである必要があります。私はWebサービスには比較的慣れていませんが、.Net WebサービスにはSOAPとJSONの両方の出力形式があることを知っています(他の場合もあります)。しかし、これらはどちらも機能しません。
指定された応答を完全に制御する必要があります。 .ASPXページを使用してこれを行っていた場合、レガシーレポーズを文字列に書き込み、応答をクリアしてから、その文字列を応答に追加し、Response.Endを呼び出します。
.ASMXに類似したものはありますか?
それを行うためのよりスマートな方法はありますが、ASP.Net Webアプリケーションの残りのコードベースと統合できますか?
解決
完全な応答制御が必要な場合は、ASPXページサイクルドラマをスキップして、代わりに.ASHXの使用を検討してください。それはかなり生であり、あなたが必要なものかもしれません。
他のヒント
WCFを使用して、SOAPの代わりにプレーンオールドXML(POX)を実装できます。
WebHttpBindingは、これに使用するバインディングです。 「完全なコントロール」の場合既存のサービスを明示的なWCF契約にリバースエンジニアリングする可能性を否定し、出力を完全に制御するためのストリーム。
必要な形式によって異なります。
ASMXとWCFは、真正なSOAP応答を生成します。
正しく理解できれば、「SOAPは機能しません」と言われました。奇数の形式が必要な場合は、ASPXページで説明した方法で確実に生成できます。ただし、プログラミングモデルはそれほど良くありません。
使用しているVisual Studioのバージョンは何ですか? Visual Studio 2008(SP1)を使用している場合、ASMX Webサービスを作成しないでください。マイクロソフトは現在、そのテクノロジーを「レガシー」とみなしており、バグを修正する予定はありません。
代わりに、WCFサービスを作成する必要があります。出力形式を完全に制御できます。