Настройка HTTP-заголовка в вызовах к сервису ASMX - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь добавить заголовок HTTP в вызовах к службе ASMX.

Некоторые сообщения SO говорят о SOAP заголовках, а это не то, что я хочу, так как это включает добавление элементов в тело сообщения POST, а именно этой части:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope ...>
    <soap:Body ...>
        <q2:HeaderIn ...>

Я хочу добавить к этой части запроса - заголовки HTTP:

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://..."
Host: ...
Content-Length: 2018

To с этой целью я обнаружил сообщение от 2015 , в котором описывается добавление ссылки на службу, выбор более старой веб-ссылки, затем выбор прокси-класса и переопределение GetWebRequest. К сожалению, в Visual Studio 2017 выбор альтернативного прокси-класса не представляется возможным. В противном случае это был бы отличный вариант.

Вопрос: Я что-то упускаю (очевидное), что приводит к выбору прокси-класса для сгенерированного класса клиента службы ASMX?

Этот ответ на аналогичный вопрос (также этот) говорит об использовании OperationContextScope для добавления пользовательских заголовков в запрос WCF. Я подумал, что мог бы добавить службу в качестве службы WCF и использовать ее. Преобразование кода решения из использования сгенерированного пространства имен клиента ASMX в сгенерированный клиент WCF было просто вопросом изменения пространств имен в операторах using - все остальное было таким же.

К сожалению, на самом деле звонки с использованием Сбой клиента WCF для службы ASMX, поскольку сгенерированный XML в теле запроса совершенно другой.

Вопрос: Я что-то упустил из-за использования ASMX поверх WCF, что вызывает эту проблему, или это просто что не возможно? ( Эта статья может показаться, что это возможно.)

1 Ответ

0 голосов
/ 06 февраля 2020

Найдено это сообщение , в котором говорится, что частичный класс в отдельном файле должен использоваться для переопределения GetWebRequest() и вставки пользовательских заголовков.

...