Как получить данные из Business Central?

Я создал C # -проект, в котором я пытаюсь подключиться к своей облачной песочнице Business Central.

В Business Central я сделал расширение с новым модулем кода, в котором есть функция, которую я называю MHSTest. Он просто возвращает текст.

В Visual Studio я сделал ссылку на службу, которая подключается к URL-адресу SOAP в Business Central. Итак, я вижу имя моей функции MHSTest в Visual Studio.

Когда я пишу это в Visual Studio, я получаю сообщение об ошибке, потому что он пытается подключиться анонимно:

var client = new MHSTest.CSharpCodeunit_PortClient();
myTextBox.Text = client.MHSTest();

Если вместо этого я попробую сделать следующее, я получаю сообщение об ошибке, в котором говорится, что https недействителен. Это должно быть http.

string endpoint = "">api.businesscentral.dynamics.com/.../CSharpCodeunit";
var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
binding.MaxBufferSize = 999999;
binding.MaxReceivedMessageSize = 999999;

var client = new MHSTest.CSharpCodeunit_PortClient(binding, new EndpointAddress(endpoint));

myTextBox.Text = client.MHSTest();

Как подключиться к Business Central и получить (или установить) данные?

App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="Debitorer_Binding">
<security mode="Transport" />
</binding>
<binding name="Debitorer_Binding1" />
<binding name="CSharpCodeunit_Binding">
<security mode="Transport" />
</binding>
<binding name="CSharpCodeunit_Binding1" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="api.businesscentral.dynamics.com/.../2999befa-1255-4304-a79a-67de0e24f090/Sandbox/WS/CRONUS%20Danmark%20A%252FS/Page/Debitorer?tenant=msneua5672t92712555&amp;aid=FIN"
binding="basicHttpBinding" bindingConfiguration="Debitorer_Binding"
contract="BCCustomer.Debitorer_Port" name="Debitorer_Port" />
<endpoint address="api.businesscentral.dynamics.com/.../2999befa-1255-4304-a79a-67de0e24f090/Sandbox/WS/CRONUS%20Danmark%20A%252FS/Codeunit/CSharpCodeunit?tenant=msneua5672t92712555&amp;aid=FIN"
binding="basicHttpBinding" bindingConfiguration="CSharpCodeunit_Binding"
contract="MHSTest.CSharpCodeunit_Port" name="CSharpCodeunit_Port" />
</client>
</system.serviceModel>
</configuration>

person Morten    schedule 01.07.2020    source источник


Ответы (1)


Проблема решена. Мне просто нужно было добавить этот код после определения моей клиентской переменной:

System.ServiceModel.Security.UserNamePasswordClientCredential credential cre = client.ClientCredentials.UserName;

cre.UserName =; cre.Password =;

person Morten    schedule 14.07.2020
comment
Форум удалил то, что я написал после имени пользователя и пароля. Они должны быть установлены на имя пользователя и веб-ключ из Business Central. - person Morten; 14.07.2020