#c# #sharepoint #proxy #csom #sharepoint-online
#c# #sharepoint #прокси #csom #sharepoint-online
Вопрос:
У меня есть настольное приложение, в котором я использую CSOM для прямого подключения к сайту SharePoint Online. Проблема сейчас в том, что этот запрос должен быть сделан через прокси-сервер. Что я сделал до сих пор, так это то, что я передал настройки прокси-серверов, включая учетные данные для события ExecutingWebRequest ClientContext. Однако проблема заключается в классе SharePointOnlineCredentials. Я должен установить учетные данные ClientContext. Когда я передаю идентификатор пользователя и пароль конструктору этого класса, он внутренне отправляет запрос в SP для проверки учетных данных. Теперь я не могу установить / передать идентификатор прокси-сервера / пароль этому классу, поэтому прокси-сервер отклоняет запрос, я получаю исключение IdcrlException. Ниже приведен пример кода, который я использую на данный момент.
SecureString passWord = new SecureString();
password.ToList().ForEach(passWord.AppendChar);
SP.ClientContext ctx = new SP.ClientContext(targetURL);
ctx.ExecutingWebRequest = (sen, args) =>
{
System.Net.WebProxy myProxy = new System.Net.WebProxy();
myProxy.Address = new Uri(this.proxyUrl);
myProxy.Credentials = new System.Net.NetworkCredential(this.proxyUserName, this.proxyPassword);
args.WebRequestExecutor.WebRequest.Proxy = myProxy;
};
//This is the line which is causing the issue.
ctx.Credentials = new SP.SharePointOnlineCredentials(this.userName, passWord);
Ожидаемый код успешно выполняется на прокси-серверах, которые не требуют никакой аутентификации. Это SharePointOnlineCredentials, который я не могу настроить. Я также пытался использовать NetworkCredentials вместо SharePointOnlineCredentials. Код успешно компилируется, но SP выдает запрещенное исключение.
Ответ №1:
Вы пробовали устанавливать параметры прокси-сервера в файле web config? Например:
<system.net>
<defaultProxy>
<proxy
usesystemdefault="False"
proxyaddress="https://MyCompanyName.sharepoint.com/"
bypassonlocal="True"
/>
</defaultProxy>
</system.net>
Затем переопределите в своем коде имя пользователя для подключения.
Также мне трудно понять, где находится строка кода, которая приводит к сбою вашего: ctx.Crednetials = new SP.SharePointOnlineCredentials (this.Имя пользователя, пароль);
Комментарии:
1. @Andrew Это фактический фрагмент кода. Я только что добавил комментарий, чтобы выделить строку, вызывающую исключение. Это строка, в которой приложение внутренне пытается установить соединение для проверки идентификатора пользователя и pwd. Это одноразовая функция, поскольку впредь, что бы я ни просил, проверка моих запросов не выполняется. Проблема в том, что я не могу передать настройки своего прокси классу SharePointOnlineCredentials , поскольку он пытается установить соединение в конструкторе. Я должен также сказать, что приложение является настольным приложением.