@Xarzu

Как устранить это исключение, возникающее при попытке выполнить операции CRUD в CSOM?

Как мне разрешить это исключение, выдаваемое при попытке выполнить операции CRUD в CSOM?

Позвольте мне объяснить это для вас. CRUD, конечно, означает «Создание, чтение, обновление и удаление». CSOM — это технология для подключения C# к списку Sharepoint (или, как я предполагаю, также к списку Microsoft) для того, чтобы программно вносить дополнения или изменения в указанный список из кода C#.

Я думаю, что из-за того, что список Microsoft находится на высокозащищенном удаленном источнике, переполненном системами безопасности, я получаю исключение, выдаваемое при настройке запроса и выполнении «ExecuteQuery» из класса ClientContext. Я могу предоставить исходный код, если необходимо, но я не думаю, что это необходимо. У меня есть простой вопрос. Что может вызвать ошибку 403 Forbidden и как мне найти способ ее устранить?

Ax1V3O8J.png

26cFgSlM.png

Here is the details of the System.Net.WebException error:

System.Net.WebException
HResult=0x80131509
Message=The remote server returned an error: (403) Forbidden.
Source=System
StackTrace:
at System.Net.HttpWebRequest.GetResponse()
at Microsoft.SharePoint.Client.SPWebRequestExecutor.Execute()
at Microsoft.SharePoint.Client.ClientContext.GetFormDigestInfoPrivate()
at Microsoft.SharePoint.Client.ClientContext.EnsureFormDigest()
at Microsoft.SharePoint.Client.ClientContext.ExecuteQuery()
at Dashboard.frmSettings.btnProcess_Click(Object sender, EventArgs e) in C:\source\Dashboard\Dashboard\frmSettings.cs:line 635

This exception was originally thrown at this call stack:
[External Code]
Dashboard.frmSettings.btnProcess_Click(object, System.EventArgs) in frmSettings.cs

What looks most important to me is:
System.Net.WebException HResult=0x80131509

Before I dig into this issue any further, I would like to take a moment and ask some simplier questions which could lead to answers that might help:
1. In order to make sure I am able to access the Microsoft List from the server, I am using a username and password in setting up the ClientContext class like this:

Using (ClientContext ctx = new ClientContext("(URL TO THE SHAREPOING SITE)"))
{
ctx.Credentials = new System.Net.NetworkCredential(txtUsername.Text, txtPassword.Text);
}

Итак, позвольте мне спросить вот что. Может ли проблема быть такой простой, как тот факт, что пароль должен быть каким-то специальным строковым классом? Я помню, что однажды видел что-то об этом.
Я отклонил это, потому что думал, что это какая-то штука APP.CONFIG, используемая с ASP.NET

Теперь, если это, что я только что упомянул, не является проблемой, тогда давайте продолжим. Microsoft должна предоставить способ программного интерфейса с решениями с малым кодом или без кода, и если они гордятся тем, что предоставляют решения для разработчиков, то они предлагают продукты для решений.

Bing — это продукт Microsoft. Возможно, продукт Bing AI «Copilot» может дать некоторые ответы.

Я спросил Bing Copilot:
КАК ИСПРАВИТЬ System.Net.WebException HResult=0x80131509

Copilot сказал:
System.Net.WebException с HResult=0x80131509 часто возникает, когда есть проблема с базовым соединением. Давайте рассмотрим некоторые возможные решения:

1. Проверьте сервер:
o Убедитесь, что сервер, к которому вы подключаетесь, работает и не испытывает проблем. Просмотрите журналы или записи в окне просмотра событий на предмет каких-либо подсказок.
o Убедитесь, что вы подключаетесь к правильному серверу (рассмотрите настройки прокси-сервера и т. д.).
o Проверьте код состояния HTTP, возвращаемый в ответе (если он доступен).

2. Отслеживание исключений:
o Оберните свой код в блоки перехвата исключений и распечатайте полную трассировку стека. Это может предоставить больше информации о проблеме.
o Рассмотрите возможность включения трассировки сети, чтобы увидеть, что происходит по сети.

3. Отключите Expect100Continue:
o В некоторых случаях установка System.Net.ServicePointManager.Expect100Continue на false может решить проблему.
o Вы можете сделать это с помощью: System.Net.ServicePointManager.Expect100Continue = false;

4. Убедитесь в поддержке TLS:
o Если вы используете PowerShell, включите TLS, добавив эту строку перед вызовом Invoke-RestMethod или Invoke-WebRequest: [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls3.
o Для приложений C# убедитесь, что вы используете самую последнюю версию .NET Framework.

5. Переопределите метод GetWebRequest:
o Добавьте в свой класс метод, который переопределяет GetWebRequest. Это позволит вам получить доступ к объекту HttpWebRequest.

Итак, это приводит меня к следующим вопросам:

1. Как мне «проверить сервер»? Как мне убедиться, что сервер, к которому я подключаюсь, работает и не испытывает проблем? Я могу войти в учетную запись панели мониторинга (мы буквально называем ее «панелью мониторинга»), и оттуда я могу свободно просматривать наш список Microsoft и просматривать его в виде сетки или строки. Разве это не означает, что сетевое подключение проверено? Что конкретно мне нужно сделать для дальнейшей проверки сети?

2. Это приводит меня к «Рассмотрите возможность включения трассировки сети, чтобы увидеть, что происходит по сети». Как мне это сделать?
3. Я попробовал добавить строку System.Net.ServicePointManager.Expect100Continue = false; перед строкой кода, которая вызывает исключение, и это не исправило проблему
4. там написано «Для приложений C# убедитесь, что вы используете самую последнюю версию .NET Framework». Как узнать, что я использую последнюю версию .NET Framework, и где мне получить последнюю версию? Это может решить проблему.
5. Как мне добавить в свой класс метод, который переопределяет GetWebRequest?

Выполняя поиск, чтобы найти, как исправить эту ошибку 403 Forbidden, я нашел некоторую информацию о разрешениях для файлов и папок и исправлении ее путем установки разрешений для файла и папки. У меня нет возможности сделать это, но у меня есть возможность зайти в Microsoft List и получить ссылку на разрешения на редактирование. Я попробовал использовать эту ссылку, но все равно получил ошибку 403 Forbidden при выполнении моего кода.

Пожалуйста, дайте совет.
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ответы на вопрос 1
yarosroman
@yarosroman Куратор тега C#
C# the best
1. Некрасиво считать тут людей за отсталых, расписывая, что такое CRUD, и следом задавать вопрос.
2.
https://learn.microsoft.com/en-us/answers/question...
https://stackoverflow.com/questions/68711532/share...

тут скорее всего решение проблемы
3. 403 ошибка, ото отфутболивает веб-сервер, значит, неверно передаете учетные данные, отсутствуют заголовки какие либо и т.д.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы