Аутентификация предотвращает публикацию в Classic ASP из веб-формы с помощью WebClient () из кода позади - PullRequest
0 голосов
/ 09 апреля 2019

Я управляю и старым веб-сайтом (сайтом, а не приложением), который является гибридом веб-форм и классического ASP.Классический ASP постепенно сокращается, но это, вероятно, через год.Прямо сейчас мы отбрасываем старую форму аутентификации в пользу аутентификации Windows в web.config.

Проблема в том, что я пытаюсь опубликовать на классической странице код из веб-формы (http://www.blahsiblah.com/index.aspx) и получаю ошибку 401.

var webClient = new WebClient();
var urlClassicASP = "http://www.blahsiblah.com/classic.asp";
var responseArray = webClient.UploadValues(urlClassicASP, "POST", nameValueCollection);

Это выдает «Удаленный сервер возвратил ошибку: (401) Несанкционировано»

Мой вопрос: как я могу публиковать на классической странице, не вызывая аутентификацию стороны dotNet?

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Есть несколько способов добиться этого. Вот простое предложение, которое, я надеюсь, поможет

.Net Использовать 127.0.0.1 (или ваш внутренний 192.169 / 10.1 *) IP для публикации на странице по сравнению с публичным URL.Добавьте параметр (назовите его «bypassauth» или что-то уникальное) при отправке запроса на страницу ASP. Добавьте параметр, который идентифицирует пользователя, которого вы аутентифицировали, на стороне .Net

ASP. Найдите включение, где аутентификацияпроверка происходит, и в этой проверке добавьте еще одно условие перед возвратом 401, который проверяет две вещи 1) Запрос от локального / внутреннего IP-адреса 2) Имеет параметр bypassauth 3) Идентификатор пользователя действителен

Таким образом, ваш старыйASP-код по-прежнему будет продолжать работать, если запрос от браузера и ожидает, что пользователь будет аутентифицирован, однако, при отправке запроса из .net позволит вам обойти аутентификацию

Я уверен, что есть и другие идеи, но этоэто всего лишь один подход

0 голосов
/ 26 апреля 2019

Мое решение было установить:

webClient.UseDefaultCredentials = true;
...