У меня проблема с моим приложением WCF при подключении клиента из Windows 8.1. Я схожу с ума по этому поводу последние пару дней и не могу в этом разобраться. Вот сценарий:
Моя служба WCF довольно проста. Он использует basicHttpBinding с режимом безопасности TransportCredentialOnly и дайджест-тип учетных данных клиента. (Файл web.config находится здесь: http://pastebin.com/LsWmcfTs). Он делает это таким образом, поскольку мне нужен идентификатор Windows на стороне сервера.
Мой клиент - консольное приложение, сбой происходит, когда он пытается вызвать метод Ping в моей службе (который просто возвращает текст Pong). Код, используемый для подключения к службе, приведен ниже:
var basicBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
basicBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Digest;
var client = new TestExecutionEngineClient(basicBinding, new EndpointAddress(uri));
client.Open();
client.Ping();
Это работало более года на всех подключающихся клиентах All, кроме Windows 8.1, то есть там, где это никогда не работало.
Когда он попадает в client.Ping (); Я получаю исключение ниже:
Исключение:
HTTP-запрос неавторизован со схемой аутентификации клиента «Дайджест». Заголовок аутентификации, полученный от сервера, имел следующий вид: "Digest qop =" auth ", algorithm = MD5-sess, nonce =" + Upgraded + v1c1d404aaeb7edbba8daf132fea97aa12243033a0f40acf01376892331a408411c85513f482eab7502b8998c8 ",
Внутреннее исключение:
Удаленный сервер возвратил ошибку: (401) Неавторизованный.
Базовое исключение:
В пакете безопасности нет учетных данных
Насколько я могу судить, похоже, что сторона сервера запрашивает дайджест (правильно), а клиент аутентифицируется в дайджесте, но он его не принимает ...
Любая помощь будет принята с благодарностью. Спасибо