.NET Добавление пользовательских заголовков Http в прокси-сервер веб-службы выдает ошибки - PullRequest
0 голосов
/ 16 ноября 2010

Мне нужно прикрепить пользовательский заголовок к моему клиенту веб-службы.Для этого я создал частичный класс для класса SoapHttpClientProtocol, который был сгенерирован при добавлении веб-ссылки.Тем не менее, я получаю ошибку во время выполнения, когда мои пользовательские заголовки подключены.Все работает нормально, если пользовательские заголовки не присоединены (когда я комментирую код, который присоединяет заголовки).Однако, если пользовательские заголовки добавляются, то я получаю следующую ошибку во время выполнения: Клиент обнаружил тип содержимого ответа 'text / html;charset = utf-8 ', но ожидаемый' text / xml '.Есть идеи?

Так вот пример кода:

 public partial class SMARTSWS : System.Web.Services.Protocols.SoapHttpClientProtocol 
{
    private NameValueCollection _customHeaders = new NameValueCollection();

    protected override System.Net.WebRequest GetWebRequest(System.Uri Uri)
    {
        // Add authentication cookie to the 
        // this object CookieContainer
        SmartsIVRSecurityManager.SetAuthToken(this);

        // Set Custom Headers
        SetCustomHeaders();

        HttpWebRequest req = (HttpWebRequest)base.GetWebRequest(Uri);
        for (int i = 0; i <= _customHeaders.Count - 1; i++)
        {
            req.Headers.Add(_customHeaders.Keys[i], _customHeaders.GetValues(i).GetValue(0).ToString());
        }
        return req;
    }


    /// <summary>
    /// Set Custom Headers
    /// </summary>
    /// <param name="smToken"></param>
    public void SetCustomHeaders()
    {
        _customHeaders.Add("Version", "1.0");
        _customHeaders.Add("OnBehalfOf", String.Empty);
        _customHeaders.Add("Role", "1");
        _customHeaders.Add("EndPoint", "001");
        _customHeaders.Add("ServiceId", "001");
        _customHeaders.Add("DateTime", String.Empty);
        _customHeaders.Add("ClientApplication", "SmartsIVRService");
        _customHeaders.Add("TraceWebMethod", "false");
        _customHeaders.Add("ClientTouchPoint", "SmartsIVRService");
        _customHeaders.Add("ChannelInfo", "ChannelInfo");
    }
}

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

Когда вы видите ответ типа "text / html", обычно это страница с ошибкой, пытающаяся сказать вам, что не так.Используйте Fiddler или что-то еще, чтобы увидеть, что пытается сообщить вам страница с ошибкой.

0 голосов
/ 16 ноября 2010

Если вы прервитесь сразу после получения запроса из базового класса, что скажет тип контента веб-запроса?

Установлено ли значение text / html или text / xml? Мне интересно, если ваш кастинг меняет тип.

...