В настоящее время я пытаюсь развернуть веб-сервис Navision (из Dynamics Navision 2009) и обнаружил, что веб-сервис аутентифицируется при подключении к локальной базе данных Navision SQL, но НЕ удаленной базе данных Navision SQL.
Итак, у нас есть серверы S (с полной установкой Navision) и W (с установленными только службами). Файл CustomSettings.config в этих двух системах идентичен, за исключением того, что S ссылается на localhost:
<add key="DatabaseServer" value="127.0.0.1"></add>
<add key="ClientCredentialType" value="Windows"></add>
W ссылки S:
<add key="DatabaseServer" value="S"></add>
<add key="ClientCredentialType" value="Windows"></add>
(Прочие детали опущены.) Сам веб-сервис работает от имени одного и того же пользователя домена в обоих случаях, и этот пользователь аутентифицирован в Navision.
Когда я подключаюсь к веб-службе, запущенной на S, аутентификация работает, и служба работает как обычно:
http://S:7047/DynamicsNAV/WS/Company/Codeunit/RLIntegartion
Я опущу здесь фактический результат. При подключении через W:
http://W:7047/DynamicsNAV/WS/Company/Codeunit/RLIntegartion
веб-сервис вместо этого возвращает XML, указывающий на сбой аутентификации:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="urn:microsoft-dynamics-schemas/error">
a:Microsoft.Dynamics.Nav.Types.NavDatabasePasswordException
</faultcode>
<faultstring xml:lang="en-US">
The login failed when connecting to SQL Server S.
</faultstring>
<detail>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
The login failed when connecting to SQL Server S.
</string>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
Я могу настроить соединение ODBC на W с базой данных Navision на S, и соединение будет успешным и аутентифицируется правильно, поэтому фактическое соединение с базой данных и аутентификация кажутся нормальными.
Я знаю, что к самому веб-сервису обычно требуется доступ локально, чтобы любые записанные файлы можно было прочитать из того места, где их написал веб-сервис Navision, но из того, что я могу сказать в документации, веб-сервис может законно обращаться к базе данных с отдельного сервера. . Однако на практике (как указано выше) это не работает.
Это ограничение, которое накладывает Navision? Если нет, есть ли у кого-нибудь предложения относительно того, почему веб-сервис не может пройти аутентификацию при доступе к удаленной базе данных, когда тот же веб-сервис успешно работает локально?
Или это ограничение, наложенное программистами codeunit? Я разговаривал с ними, и они указывают, что это должно сработать, но очевидно, что это не так.