Я использую веб-службу в своем приложении, которая требует, чтобы определенный файл cookie был настроен для доступа к его методам.
Я использовал сгенерированный класс оболочки для этой службы, созданный с помощью инструмента wsdl.exe
. Все работает нормально, используя этот метод.
// this is the instance of object generated with wsdl.exe
WSWrapper service = new WSWrapper();
// set cookie
service.CookieContainer = new CookieContainer();
Cookie cookie = new Cookie(name, value, path, domain);
service.CookieContainer.Add(cookie);
// run method requiring cookie to be set
service.Test();
Теперь я хотел сделать что-то подобное, используя Service Reference вместо предварительно сгенерированного класса. Я добавил веб-ссылку, но, похоже, не было CookieContainer
(или чего-то подобного) в клиентском дескрипторе сервиса, который был сгенерирован.
Кто-нибудь знает, как добавить файл cookie к этому клиенту?
Я решил проблему. Вместо создания Service Reference я добавил Web Reference, и у сгенерированного клиента были все свойства предварительно сгенерированного класса wsdl.exe
.
Тем не менее существуют преимущества для созданных прокси-серверов svcutil.exe
.
Сохранение и возврат клиенту файлов cookie, возвращаемых сервером (как это обычно делается путем простого добавления CookieContainer
), теперь можно контролировать с помощью app.config. Добавьте allowCookies="true
"в basicHttpBinding
или basicHttpsBinding
в качестве атрибута привязки.
В качестве альтернативы используйте редактор конфигурации WCF, чтобы сделать то же самое.