Если это - конструктор, особенно если существует несколько перегруженных вариантов, необходимо посмотреть на шаблон Разработчика:
Foo foo = new Foo()
.configBar(anything)
.configBaz(something, somethingElse)
// and so on
, Если это - нормальный метод, необходимо думать об отношениях между значениями, передаваемыми, и возможно создать Объект Передачи.
У меня похожая проблема, пробовали ли вы:
proxy.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
Только что получили эту проблему на машине развития (производственные работы просто отлично). Я изменяю свой конфиг в IIS, чтобы разрешить анонимный доступ и поставить мое имя и пароль в качестве учетных данных.
Не лучший способ, которым я уверен, но он работает для целей тестирования.
Я вижу, что на этот вопрос еще не ответили, это точная цитата отсюда:
WSHttpBinding попытается выполнить внутреннее согласование на уровне SSP. Для того, чтобы это было успешным, необходимо разрешить анонимность в IIS для VDir. WCF будет тогда по умолчанию перфром SPNEGO для учетных данных окна. Разрешение анонимности на уровне IIS не позволяет никому войти, это откладывает к стеку WCF.
Я нашел это через: http://fczaja.blogspot.com/2009/10/http-request-is-unauthorized-with.html
После гугления: http://www.google.tt/#hl=en&source=hp&q=+The+HTTP+request+is+unauthorized+with+client+authentication+scheme+%27Anonymous
У меня не было контроля над конфигурацией безопасности для службы, в которую я звонил, но возникла та же ошибка. Я смог исправить своего клиента следующим образом.
В конфигурации настройте режим безопасности:
{{1 }}
В коде установите прокси-класс, чтобы разрешить олицетворение (я добавил ссылку на сервис под названием customer):
Customer_PortClient proxy = new Customer_PortClient ();
proxy.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Impersonation;
Вот что мне нужно было сделать, чтобы это заработало. Это означает:
Мой сайт управляется через DotNetPanel. Он имеет 3 варианта безопасности для виртуальных каталогов:
Требуется только «Разрешить анонимный доступ» (хотя этого самого по себе было недостаточно ).
Настройка
proxy.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
В моем случае ничего не изменилось.
Однако использование этой привязки сработало:
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows" />
<message clientCredentialType="UserName" />
</security>