5

"TestHeader"nameと paramの SOAP ヘッダーを受信するように Web サービスをセットアップしました"Name"

クライアントで SOAP ヘッダーを作成し、それをサービスに送信するにはどうすればよいですか?

これまでのところ、クライアントで作成しました。

public class TestHeader : SoapHeader
{
    public String Name;
}

サービスを初期化し、

    Test.TestServicesClient SOAP = new Test.TestServicesClient();

ヘッダーを初期化しました。

  TestHeader header = new TestHeader();

ヘッダーに変数を設定する

header.Name = "BoB";

それで?MSDN やその他のチュートリアルに従ってみましたが、どこにも行きませんでした。

TestService.cs

using System;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Security.Cryptography;
using System.Runtime.InteropServices;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Channels;

namespace Test
{

    // Define a SOAP header by deriving from the SoapHeader class.
    public class TestHeader : SoapHeader
    {
        public String Name;
    }

   public class TestService : ITestServices
    {      

        public TestHeader TestInHeader;


       [WebMethod]
        [SoapHeader("TestInHeader", Direction = SoapHeaderDirection.In)]
        public List<ServiceDetails> GetServiceDetails(Int32 CostCentreNo, Int32 ServiceCode, Boolean Recurring)
        {
            throw new System.Exception(TestInHeader.ToString());

        }
    }
}
4

2 に答える 2

5

少し遅くなりましたが、以下が回答です。

    Test.TestHeader header = new Test.TestHeader();
    header.Name = "BoB";
    Test.TestService SOAP = new Test.TestService();
    SOAP.TestHeaderValue = header;
    SOAP.GetServiceDetails(0,0,False);

件名を明確にするリンクは次のとおりです。

于 2012-11-14T22:10:43.223 に答える
2

あなたが提供する情報は十分に詳細ではないため、いくつかの一般的な指針のみ:

上記のリンクには、WCF (最初のリンク) と SOAP (2 番目のリンク) のサンプル コードを含むソリューションが含まれています...

編集 - コメントによると:

この記事 (アーカイブ済み)では、カスタム SOAP ヘッダーを実装し、それぞれのサービスを呼び出す前にそれらを設定するための完全なチュートリアルを提供します。

Test.TestServicesClient基本的に、定義したクラスを拡張する必要がTestHeaderあり、Web サービスのメソッドを呼び出す前にその値を設定できます。

于 2011-09-26T11:23:40.627 に答える