Как удалить запись в C# с помощью веб-службы ODATA
LS,
В D365BC я создал простую таблицу, страницу карты и страницу списка. Вы можете создать список рабочих, вводящих: имя, фамилию и функцию.
Я превратил страницу карты в веб-сервис, и теперь есть веб-сервис ODATA V3, ODATA V4 и SOAP.
В C# VS2019 я создал программу, чтобы посмотреть, могу ли я удалить запись с помощью этих веб-служб.
Когда я использую веб-сервис SOAP, нет никаких проблем. Он удаляет выбранную запись.
Но когда я использую веб-сервис ODATA, я получаю ошибку 404 not found.
Что я уже пробовал:
Когда я использую этот код для веб-сервиса SOAP, проблем нет. Он удаляет выбранную запись.
private void button4_Click(object sender, EventArgs e) {//delete string _wsURL = "https://api.businesscentral.dynamics.com/v2.0/SomeFunkyGUID/Sandbox/WS/CRONUS%20NL/Page/WorkersWS"; string _userName = "UserName"; string _wsKey = "Password"; //Create an instance of the D365BC SOAP WS BasicHttpBinding _binding = new BasicHttpBinding(); //Set https usage _binding.Security.Mode = BasicHttpSecurityMode.Transport; _binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; WorkersWS_PortClient _ws = new WorkersWS_PortClient(_binding, new EndpointAddress(_wsURL)); _ws.ClientCredentials.UserName.UserName = _userName; _ws.ClientCredentials.UserName.Password = _wsKey; try { _ws.Delete(rtbE_Tag.Text); //this textbox holds this: W/ABC12345 nr which is like a primary key } catch (Exception _ex) { } }
Но теперь я делаю почти то же самое, за исключением того, что теперь я использую веб-сервис ODATA (PS нет никакой разницы, если я использую веб-сервис ODATA v3 или v4, они оба дают ошибку 404 not found):
private async void button6_Click(object sender, EventArgs e) { try { string _url = "https://api.businesscentral.dynamics.com/v2.0/SomeFunkyGuid/Sandbox/ODataV4/Company('CRONUS%20NL')/WorkersWS";//List Page string _userName = "UserName"; string _wsKey = "Password"; byte[] _authenticationParameter = Encoding.UTF8.GetBytes(_userName + ":" + _wsKey); _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(_authenticationParameter)); HttpResponseMessage response = await _client.DeleteAsync(_url + "/" + rtbE_Tag.Text);//this textbox holds this: W/ABC12345 nr which is like a primary key response.EnsureSuccessStatusCode(); } catch (Exception ex) { } }
Когда я использую код, чтобы попытаться использовать веб-службу ODATA, код прерывается на: response.EnsureSuccessStatusCode();
Ошибка: состояния нет успеха, 404 (не найдено)
Возможно, я передаю запись, которая должна быть удалена неправильным способом?
Надеюсь, кто-нибудь сможет мне помочь.
С уважением,
Клеменс Линдерс