Я создал веб-сервис на основе TCP, который предоставляет конечную точку mex. Недавно я добавил аутентификацию пользователя через
var tcpbinding = new NetTcpBinding(SecurityMode.TransportWithMessageCredential, true);
tcpbinding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
svh.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new BWUserNamePasswordValidator();
svh.Credentials.UserNameAuthentication.UserNamePasswordValidationMode =UserNamePasswordValidationMode.Custom;
svh.Credentials.ServiceCertificate.Certificate = TcpBindingCertificate;
Теперь, когда я пытаюсь обновить ссылку на службу в клиентском проекте, я получаю сообщение об ошибке о метаданных, содержащих ссылку, которая не может быть разрешена. Когда код безопасности удален, мекс работает нормально
Вот код для конечной точки mex:
// Check to see if the service host already has a ServiceMetadataBehavior
ServiceMetadataBehavior smb = svh.Description.Behaviors.Find<ServiceMetadataBehavior>();
// If not, add one
if (smb == null)
smb = new ServiceMetadataBehavior();
//smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
svh.Description.Behaviors.Add(smb);
// Add MEX endpoint
svh.AddServiceEndpoint(
ServiceMetadataBehavior.MexContractName,
MetadataExchangeBindings.CreateMexTcpBinding(),
location+"/mex"
);
Почему я получаю это и как это можно исправить?