Как мне прикрепить SOAP-заголовок к моему клиенту C #? - PullRequest
3 голосов
/ 26 сентября 2011

У меня настроен веб-сервис для получения мыльного заголовка с именем "TestHeader" с параметром "Name"

Как создать заголовок мыла в моем клиенте и отправить его в службу?

Пока я создал его в своем клиенте.

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());

        }
    }
}

Ответы [ 2 ]

3 голосов
/ 15 ноября 2012

Полагаю, я немного опоздал, но вот ответ:

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

Вот ССЫЛКА , которая разъясняет тему: «... Visual Studio создаст свойствов прокси-сервере веб-службы с именем «UserCredentialsValue», который отобразит общедоступное свойство «потребителя» [которое наследуется от SoapHeader] в веб-службе. "

1 голос
/ 26 сентября 2011

Поскольку информация, которую вы предоставляете, недостаточно детализирована, приведены лишь некоторые общие указатели:

Приведенные выше ссылки содержат решения, включая пример кода для WCF (первая ссылка) и SOAP (вторая ссылка) ...

РЕДАКТИРОВАТЬ - согласно комментариям:

В этой статье дается полное пошаговое руководство по реализации пользовательских заголовков SOAP и их настройке перед вызовом соответствующей службы.

В сущности, вам нужно расширить класс Test.TestServicesClient с помощью TestHeader, который вы определили, и затем вы можете просто установить его значение перед вызовом метода веб-службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...