|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
Это кусок кода из WCF сервиса, работающего как консольное приложение, оно работает на машине m1 и запущено юзером u1. Клиентские c# приложения коннектятся по протоколу net.tcp. 1. Клиент на этой же машине пускается тем же юзером u1 - все хорошо. 2. Клиент на машине m2 запускается юзером u2 - на попытке открытия коннекции (см. ниже) ошибка авторcould not load file or assembly system.enterpriseservices ... or one of its dependencies. Either a required impersonation level was not provided, or the provided impersonation level is invalid Доменный юзер u2 входит в Администраторы на компьютере m1. Оба компьютеры под Win7 в локальной сети с доменом. Как бороться с этим? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 16:54 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
conStr = ??? а ошибка какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 16:58 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 16:59 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
Winnipuh2. Клиент на машине m2 запускается юзером u2 WinnipuhДоменный юзер u2 входит в Администраторы на компьютере m1. ну так комп то другой, кто там у вас этот u2 на машине m2 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 17:01 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
Konst_OneconStr = ??? а ошибка какая? ConnectionString - нормальная, с ней же конектится локальный юзер (случай 1) и она же работает, если я закрываю комментарием строки //m_callerWindowsIdentity = callerWindowsIdentity; //m_wic = m_callerWindowsIdentity.Impersonate(); Код: c# 1.
Ошибка: автор{"Could not load file or assembly 'System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Exception from HRESULT: 0x80070542":"System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"} System.Exception {System.IO.FileLoadException} При этом юзер u2 на своей локальной машине m2 с такой же строкой коннектится к запущенному на m2 тоже нормально. Подумал, что может что-то с правами юзера на чужой машине?... но что? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 17:09 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
Konst_OneWinnipuh2. Клиент на машине m2 запускается юзером u2 WinnipuhДоменный юзер u2 входит в Администраторы на компьютере m1. ну так комп то другой, кто там у вас этот u2 на машине m2 ? это локальная машина для этого юзера, каждый юзер на своей машине администратор, но локально все работает, если клиент и сервис на той же машине ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 17:10 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
а компы m1 и m2 в одном домене? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 17:11 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 17:14 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
Konst_Oneа компы m1 и m2 в одном домене? да, один домен. Если к примеру включаю basicHttp - все работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 17:45 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
И что интересно: когда я даю домен\имя+ пароль того же проблемного юзера u2 и делаю в сервисе на m1 явную имперсонификацию То есть вместо Код: c# 1. 2.
делаю так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
в результате текущим юзером в обоих случаях является нужный юзер u2, но во втором случае все работает и нет ошибки загрузки ассембли ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 17:53 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
а если захостить сервис как положено? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 17:53 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
Konst_Oneа если захостить сервис как положено? Попробую, но под ИИС он не работал тоже... У меня два варианта хостинга: windows service и под IIS. В консольном варианте я в состоянии в отладчике посмотреть, да и нет причины не работать по идее... Кроме того что получается: один и тот же юзер коннектнутый с другого компьютера работает, если делать имперсонификацию с созданием логона и не работает, если сделать "по-быстрому", при всех остальных равных условиях. При этом причина ошибки во втором случае - "нельзя загрузить ассембли из-за имперсонификации" Значит есть разница в этих двух метода имперсонификации? ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 18:11 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
а зачем вообще там смена пользовательского контекса в открытии соединения? если захостить на IIS или как windows service, то нужно в настройках сервиса указать конкретную учётку, которая имеет доступ на SQL и все дела (в случае IIS её навешивать на pool) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 18:16 |
|
Почему так работает SqlConnection?
|
|||
---|---|---|---|
#18+
Konst_Oneа зачем вообще там смена пользовательского контекса в открытии соединения? если захостить на IIS или как windows service, то нужно в настройках сервиса указать конкретную учётку, которая имеет доступ на SQL и все дела (в случае IIS её навешивать на pool) Нужно, чтобы запросы выполнялись от определенного юзера, тогда учитываются его права на Sql Server. В случае basicHttp - я делаю создание логина при помощи переданного юзером домен\имя, пароль и имперсонейт, как описано выше, все работает. Но когда юзер хочет использовать netTcp - я беру юзера из контекста и поскольку пароля нет делаю имперсонейт так m_callerWindowsIdentity = callerWindowsIdentity; m_wic = m_callerWindowsIdentity.Impersonate(); Ну вот такая вот фигня. Что-то не так в этом случае, какой-то "недоделанный" юзер получается А в чем недоделанность - не пойму... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2014, 18:27 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1402660]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
10ms |
get first new msg: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 474ms |
0 / 0 |