У меня есть служба WCF, которую я защищаю с помощью пользовательского UserNamePasswordValidator и защиты сообщений, работающих через wsHttpBinding. Код релиза отлично работает. К сожалению, когда я пытаюсь запустить в режиме отладки после того, как ранее использовал недействительные учетные данные (текущие учетные данные действительны!) VS2008 отображает раздражающее диалоговое окно (подробнее об этом ниже).
Упрощенная версия моего метода Validate из валидатора может выглядеть следующим образом:
public override void Validate(string userName, string password)
{
if (password != "ABC123")
throw new FaultException("The password is invalid!");
}
Клиент получает MessageSecurityException с InnerException, установленным на FaultException, которое я явно сгенерировал. Это работоспособно, так как мой клиент может отображать текст сообщения оригинальной FaultException, который я хотел, чтобы пользователь увидел.
К сожалению, во всех последующих сервисных вызовах VS2008 отображает диалоговое окно «Не удается автоматически отладить ...». Единственный способ предотвратить это - выйти из VS2008, вернуться обратно и подключиться к моей службе, используя правильные учетные данные. Я также должен добавить, что это происходит, даже когда я создаю новый прокси на каждый звонок. Нет шансов, что МОЙ канал выйдет из строя, когда я позвоню. Однако вполне вероятно, что VS2008 подключается к ранее неисправному каналу и пытается использовать его для целей отладки.
Само собой разумеется, это отстой! Единственная причина, по которой я ввожу «плохие» учетные данные - это проверка обработки «плохих учетных данных».
В любом случае, если у кого-нибудь есть идеи, как мне обойти эту ошибку (?!?), Я был бы очень благодарен ....