1. はじめに
- Java/Axsis2で実装していたレガシーシステムから、C#にSOAP通信サービスを移行したい
- IISへSOAP通信サービスを公開して、Soap UIを使用してクライアント側の稼働確認をしたい
- 開発効率を考えて.NET Frameworkに含まれているASP.NETのasmxを使用する
- .NETX系ではSOAP通信のツールは含まれていないため
2. 開発環境
- Visual Studio 2022
- .NET Framework 4.8
- IIS 8
- Soap UI 5.7
3. ASP.NETプロジェクトの作成
3.1. Visual Studioで新規プロジェクトを作成する
-
「ASP.NET Webアプリケーション (.NET Framework)」 を選択する
-
ASP.NETサービスがインストールされていない場合は別途Visual Struio インストーラーからインストールする
3.2. ASMXファイルを追加する
3.3. サンプルのサービスを起動する
4. SOAP通信サービスのパラメータ修正
- SOPAでパラメータを送受信できるSearchサービスを追加する
WebService1.asmx.cs (抜粋)
[WebMethod]
public ParameterDto Search(ParameterDto inParameter)
{
var outParameter = new ParameterDto
{
id = inParameter.id,
outputDto = new OutputDto
{
output1 = inParameter.outputDto.output1,
output2 = inParameter.outputDto.output2
}
};
return outParameter;
}
- パラメータのカスタムDTOクラスを追加する
ParameterDto.cs
namespace WebApplication1
{
public sealed class ParameterDto
{
public int id { get; set; }
public OutputDto outputDto { get; set; }
}
}
- パラメータ内のネストしたカスタムDTOクラスを追加する
OutputDto.cs
namespace WebApplication1
{
public sealed class OutputDto
{
public string output1 { get; set; }
public string output2 { get; set; }
}
}
5. Soap UIでの動作確認
5.1. Soap UI をダウンロードする
5.2. Soap UI をインストールする
- ダウンロードしたセットアップファイルを実行する
5.3. New SOAP Project を作成する
WSDLは 「https://localhost:44308/ [ASMXファイル名] ?WSDL」を指定する
5.4. SOAP Projectを実行する
5.5. 実行時エラーが発生したら
- 下記エラーが出る場合は、ProxyをON/OFFすることで解決できる可能性があります。
org.apache.xmlbeans.XmlException: org.apache.xmlbeans.XmlException: error: The entity "copy" was referenced, but not declared
6. IISサーバへサービスを公開する
6.1. ASMXファイルを修正する
6.2. サービスを公開する(ローカル側)
6.3. サービスを公開する(サーバ側)
7. ソースコード
8. 参考文献