У меня есть базовый сервис ASMX, который я пытаюсь запустить (я бы предпочел использовать WCF, но не могу заставить сервер работать с ним). Он работает нормально без настройки безопасности, но как только я включаю безопасность, я получаю:
HTTP-запрос не авторизован с помощью схемы аутентификации клиента «Anonymous». Заголовок аутентификации, полученный от сервера, был "Basic realm =" Защищенная область "".
Мне нужен минималистичный запрос имени пользователя и пароля Тип решения.
Изучение кода с помощью intellisense не дает ничего похожего на то, что мне нужно.
Это выглядит так, как будто это может быть полезно, но похоже, что это WCF, так что кто знает.
Я только что понял, что могу сделать это живой демонстрацией:
вот услуга: http://smplsite.com/sandbox3/Service1.asmx
имя пользователя testapp
и пароль testpw
. Мне нужно приложение командной строки, которое вызывает функции этой службы.
До того как я добавил безопасность, эта строка работала в базовом проекте VS после запуска Add Web Service Reference
на этом URL
new ServiceReference1.Service1SoapClient().HelloMom("Bob");
Это моя текущая попытка (это не работает)
class Program
{
private static bool customValidation(object s, X509Certificate c, X509Chain ch, SslPolicyErrors e)
{ return true }
static void Main(string[] args)
{
// accept anything
ServicePointManager.ServerCertificateValidationCallback +=
new RemoteCertificateValidationCallback(customValidation);
var binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
binding.Security.Transport.Realm = "Secured area";
// the generated Web Service Reference class
var client = new ServiceReference1.Service1SoapClient(
binding,
new EndpointAddress("https://smplsite.com/sandbox3/Service1.asmx")
);
client.ClientCredentials.UserName.UserName = "testapp";
client.ClientCredentials.UserName.Password = "testpw";
Console.WriteLine(client.HelloMom("Bob"));
}
}
Редактировать: Кстати, это не веб-сайт и не запущенный в браузере, код доступа - приложение командной строки C # . Кроме того, аутентификация выполняется другим плагином IIS, который я не контролирую.
Редактировать 2: Чтобы было ясно; Решение, которое я ищу, является чисто клиентской проблемой.
Редактировать 3: контроль доступа осуществляется через систему типа .haccess
, и мне это нравится.
Я не хочу, чтобы сервисный код выполнял какую-либо аутентификацию.