Там проблема в том, что в web-приложении (функция Axapta() в файле i_axaptafunctions.asp) в строках:
Код:
userid = Ws.Call("SwitchAxaptaUser")
if (Not (userid = "")) then
password = Ws.Call("switchWebUserPassword")
weblogin = Ws.Call("SwitchWebUser")
...
После того, как Axapta "поняла" с каким доменными userid пользователь пришел к IIS, weblogin приходит пустой, т.е. метод SwitchWebUser у WebSession не возвращает Web-пользователя (переменная _switchWebUser), соответствующего доменному имени.
По идее надо обновлять переменную _switchWebUser, в том же месте, где и устанавливается _switchAxaptaUser (метод WebApplication.Logon()). Но пока я сделал заплатку, она работает. Я изменил метод WebSession.SwitchWebUser().
Код:
WebLogin switchWebUser()
{
;
if (_switchAxaptaUser)
_switchWebUser = (select firstonly WebLogin from WebUser where WebUser.UserId == _switchAxaptaUser).WebLogin;
return _switchWebUser;
}
Теперь, если WebUser находится по AxaptaUser, то web-приложение логинится под этим WebUser-ом. Иначе, в моем случае вываливается weblet WebLogin.
Да. Чтобы это все работало IIS должен использовать "Integrated Windows Authentification".