Передача NetworkCredential в HttpWebRequest в C # со страницы ASP.Net

Я пытаюсь использовать HTTPWebRequest для доступа к веб-службе, и у меня возникают проблемы при передаче учетных данных, см. код ниже. Я могу видеть объект учетных данных, nc, встроенный в отладчик, а также в присвоении request.Credentials, но когда я добираюсь до последней строки кода, он выходит из строя с неавторизованным сообщением об ошибке. Я'Наши серверные сотрудники наблюдали за запросом на сервере, и учетные данные не передавались. Я делаю что-то не так с объектом Credentials, или мне нужно что-то сделать?я не делаю здесь?

Uri requestUri = null;
Uri.TryCreate("https://mywebserver/webpage"), 
    UriKind.Absolute, out requestUri);

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create
    (requestUri);

NetworkCredential nc =
    new NetworkCredential("user", "password");

request.Credentials = nc;

request.Method = WebRequestMethods.Http.Get;
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
 Russ Clark05 нояб. 2009 г., 22:26
ДжастЛорен - я неНе зная о Fiddler, пока вы не опубликовали этот комментарий, я скачал его и на вкладке «Auth» было сказано, что заголовок авторизации прокси отсутствует. Заголовок авторизации отсутствует, поэтому яЯ все еще думаю, что с моим кодом что-то не так.
 Russ Clark10 нояб. 2009 г., 14:17
Да, сервис яВызов m - это служба REST, поэтому файла wsdl нет.
 kd709 нояб. 2009 г., 22:43
Есть ли причина, по которой выне генерирует прокси-класс для вызова внутреннего веб-сервиса?
 JustLoren05 нояб. 2009 г., 21:36
Вы использовали Fiddler, чтобы увидеть для себя, что выповторное прохождение? Мне не нравится полагаться на серверных людей, чтобы оценить такие вещи :)

Ответы на вопрос(2)

либо ненадежными, либо и тем, и другим. В любом случае, вы можете решить эту проблему, полностью обойдя NetworkCredentials и использовать этот метод (который я нашел, любезно предоставлен mark.michaelis.net).

/* http://mark.michaelis.net/Blog/CallingWebServicesUsingBasicAuthentication.aspx */
byte[] credentialBuffer = new UTF8Encoding().GetBytes(username + ":" +password);
req.Headers["Authorization"] ="Basic " + Convert.ToBase64String(credentialBuffer);

Так что тыОн вручную создает заголовок для вашего запроса HttpWebRequest и вставляет содержимое так, как оно выглядит в заголовке Basic Authentication. Работает как шарм.

 Justin Clarke12 мар. 2014 г., 11:23
Отлично, этот работал, принятый ответ нея не работаю
Решение Вопроса

используя класс CredentialCache для добавления учетных данных и "Основные» разрешение:

NetworkCredential nc =
    new NetworkCredential(GetSetting("username"), GetSetting("password"));
CredentialCache cache = new CredentialCache();

cache.Add(requestUri, "Basic", nc);

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(requestUri);
 Royi Namir20 нояб. 2012 г., 09:47
не используя ss l, пароль будет передан в виде открытого текста?

Ваш ответ на вопрос