powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF net.tcp: не может загрузить System.Transactions
25 сообщений из 43, страница 1 из 2
WCF net.tcp: не может загрузить System.Transactions
    #38919527
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер коннектится к сервису
далее коннектиться к SQL Server.

Если коннект к сервису через basichttp - всё ок.
Если через net.tcp - ошибка:

Код: c#
1.
Could not load file or assembly 'System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. Either a required impersonation level was not provided, or the provided impersonation level is invalid. (Exception from HRESULT: 0x80070542)



Если сервис на другом компьютере, то там то же, но про

System.EnterpriseServices


куда смотреть?
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919534
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,
Похоже на то, что надо копать в сторону ключевых слов WCF и Impersonate a client after authentication.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919739
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronWinnipuh,
Похоже на то, что надо копать в сторону ключевых слов WCF и Impersonate a client after authentication.

на локальной машине - все ок.
Проверил на двух парах разных - вот такая фигня.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919823
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhAxeleronWinnipuh,
Похоже на то, что надо копать в сторону ключевых слов WCF и Impersonate a client after authentication.

на локальной машине - все ок.
Проверил на двух парах разных - вот такая фигня.System.Transactions относится к SQL CLR.
На локале небось обновил до версии 4.0 и лежит все в GAC. А на других машинах нет.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919825
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, Ты б почитал сообщение ошибки сперва прежде чем отвечать - там черным по белому два раза сказано слово Impersonation.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919831
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще не исключаю, что ошибка связано с проблемой double hop
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919859
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAWinnipuhпропущено...


на локальной машине - все ок.
Проверил на двух парах разных - вот такая фигня.System.Transactions относится к SQL CLR.
На локале небось обновил до версии 4.0 и лежит все в GAC. А на других машинах нет.

Не совсем так.

Есть машины сервер и клиент.
На сервере ставлю WCF, на клиенте NET приложение и там, и там используется net.tcp.
Пускаю приложение - есть ошибка.
Далее: ставлю на сервер клиентское приложение, пускаю - нет ошибки.
Такая фигня, думаю, что если бы было так как описал skyANA, то ошибка бы воспроизводилась и при локальном варианте.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919860
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhskyANAпропущено...
System.Transactions относится к SQL CLR.
На локале небось обновил до версии 4.0 и лежит все в GAC. А на других машинах нет.

Не совсем так.

Есть машины сервер и клиент.
На сервере ставлю WCF, на клиенте NET приложение и там, и там используется net.tcp.
Пускаю приложение - есть ошибка.
Далее: ставлю на сервер клиентское приложение, пускаю - нет ошибки.
Такая фигня, думаю, что если бы было так как описал skyANA, то ошибка бы воспроизводилась и при локальном варианте.
То что говорил skyANA, предполагалось, что на клиентской машине что-то недоустановлено в GAC.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919861
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAWinnipuhпропущено...


на локальной машине - все ок.
Проверил на двух парах разных - вот такая фигня.System.Transactions относится к SQL CLR.
На локале небось обновил до версии 4.0 и лежит все в GAC. А на других машинах нет.

да, но должен сказать, что эксцепция возбуждается на sqlConnection.Open();
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919884
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhskyANAпропущено...
System.Transactions относится к SQL CLR.
На локале небось обновил до версии 4.0 и лежит все в GAC. А на других машинах нет.

да, но должен сказать, что эксцепция возбуждается на sqlConnection.Open();
Поэтому я и говорю что у Вас проблема в возбуждении правильной имперсоны!
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38919885
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,
И очень вероятно, что проблема Ваша - в double hop
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38920908
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronskyANA, Ты б почитал сообщение ошибки сперва прежде чем отвечать - там черным по белому два раза сказано слово Impersonation.Написано, что не могу загрузить сборку. ИЛИ проблемы с Impersonation.

Перечитал три раза, слово ИЛИ не исчезло :)
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38920921
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAxeleronskyANA, Ты б почитал сообщение ошибки сперва прежде чем отвечать - там черным по белому два раза сказано слово Impersonation.Написано, что не могу загрузить сборку. ИЛИ проблемы с Impersonation.

Перечитал три раза, слово ИЛИ не исчезло :)
Ага, сначала последствие:
Код: c#
1.
Could not load file or assembly 'System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.


А потом и причина через или
Код: c#
1.
Either a required impersonation level was not provided, 

or
Код: c#
1.
the provided impersonation level is invalid.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38920946
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron, короче

1. в первый раз я читал с мобилы;
2. тупо кинуть сборку нужной версии в папку сервиса - минутное дело.

HRESULT: 0x80070542 - это ERROR_BAD_IMPERSONATION_LEVEL.

ИМХО эккаунту, из-под которого работает сервис надо выдать право: Act as part of the operating system .
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38920983
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAxeleron, короче

1. в первый раз я читал с мобилы;
2. тупо кинуть сборку нужной версии в папку сервиса - минутное дело.

HRESULT: 0x80070542 - это ERROR_BAD_IMPERSONATION_LEVEL.

ИМХО эккаунту, из-под которого работает сервис надо выдать право: Act as part of the operating system .

тупо скинуть не проблема, но поможет ли?

1. Попытался подключиться с того же клиента к сервису на другом компьютере: получил то же сообщение, но вместо System.Transactions там System.EnterpriseServices

2. Скопировал клиента на обе машины с сервисами и локально проверил - все работает. Значит не в длл дело?

3. Возможно причина в имперсонификации. Как правильно сделать:

Клиент использует net.tcp, на машине залогинен юзер1, коннектится к сервису на машине, где залогинен юзер2,
сервис запущен под консолью для простоты, нужно чтобы в сервисе SqlConnection (Trusted) делался от юзера юзер1.

?
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38920995
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh2. Скопировал клиента на обе машины с сервисами и локально проверил - все работает. Значит не в длл дело?

3. Возможно причина в имперсонификации. Как правильно сделать:

Клиент использует net.tcp, на машине залогинен юзер1, коннектится к сервису на машине, где залогинен юзер2,
сервис запущен под консолью для простоты, нужно чтобы в сервисе SqlConnection (Trusted) делался от юзера юзер1.

?"локально проверил" - это зашёл под собой и проверил? :) В чём проблема залогинить юзер1 вместо юзер2?
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38921006
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh, набери в пуске "Local Security Policy", в появившемя окне в дереве выбери "User Rights Assignment".
Справа в табличке втань на строку "Act as part of the operating system", нажми на правую кнопку мыши, выбери "Properties".
В появившемся окошке ткни в "Add User or Group..." и добавь своего юзер2.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38921046
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAWinnipuh2. Скопировал клиента на обе машины с сервисами и локально проверил - все работает. Значит не в длл дело?

3. Возможно причина в имперсонификации. Как правильно сделать:

Клиент использует net.tcp, на машине залогинен юзер1, коннектится к сервису на машине, где залогинен юзер2,
сервис запущен под консолью для простоты, нужно чтобы в сервисе SqlConnection (Trusted) делался от юзера юзер1.

?"локально проверил" - это зашёл под собой и проверил? :) В чём проблема залогинить юзер1 вместо юзер2?

мы о разных вещах:

1. есть сервис, запущенный на машине2 под юзер2
2. к сервису конектится клиент1, запущенный на машине1 под юзер1_1
3. к сервису конектится клиент2, запущенный на машине1 под юзер1_2
4. сервис делает коннект к SQL Server по трастед как юзер, который к нему коннектнулся.

В сервисе сделал тако1 вывод в лог:

Код: c#
1.
2.
3.
4.
5.
6.
7.
IPrincipal threadPrincipal = System.Threading.Thread.CurrentPrincipal;

            if (!string.IsNullOrEmpty(threadPrincipal.Identity.Name))
            {
                mainLogger.MainLogger.InfoFormat("Name: {0}\nIsAuthenticated: {1}" + "\nAuthenticationType: {2}",
                    threadPrincipal.Identity.Name,threadPrincipal.Identity.IsAuthenticated,threadPrincipal.Identity.AuthenticationType);
            }



В логе вижу

Код: c#
1.
2.
3.
Name: домен\юзер1_1
IsAuthenticated: True
AuthenticationType: NTLM



почти сарзу после этого вывода делаю грубо говоря так:

Код: c#
1.
2.
3.
4.
5.
6.
using(SqlConnection c = new ...)
{

c.Open(); <---------- здесь эксцепция

}



хотя данный юзер имеет права на скл сервере, собственно домен\Domain Users имеют.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38921051
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,
Вами описана типичная ситуация проблемы double hop
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38921099
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronWinnipuh,
Вами описана типичная ситуация проблемы double hop

Сервер работает как консольное приложение, запущенное юзер2

sqlconnection.Open()

выдает эксцепцию

catch (Exception x)
{
var windowsIdentity = WindowsIdentity.GetCurrent();
if (windowsIdentity != null)
mainLogger.MainLogger.ErrorFormat("Connection: Name={0}, x={1}", windowsIdentity.Name, x.Message);

Name='домен\юзер1';// !!!<-- правильный юзер, пришедший с клиента1
x= {"Login failed for user 'NT AUTHORITY\\ANONYMOUS LOGON'."} System.Exception {System.Data.SqlClient.SqlException}
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38921103
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
та же фигня и под IIS
x= {"Login failed for user 'NT AUTHORITY\\ANONYMOUS LOGON'."} System.Exception {System.Data.SqlClient.SqlException}
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38921105
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,
Ага, о чем и речь ведем. До сервиса исперсонация дошла, а сервис уже не подхватывает ее для конекции с БД.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38921106
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут нужен не NTLM, а Keberos.
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38921130
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chapter 6: Impersonation and Delegation in WCF

См. параграф Controlling Impersonation on the Client Side .
...
Рейтинг: 0 / 0
WCF net.tcp: не может загрузить System.Transactions
    #38921328
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronWinnipuh,
Ага, о чем и речь ведем. До сервиса исперсонация дошла, а сервис уже не подхватывает ее для конекции с БД.

да, и?

схема такая:

юзер1 на машине1->wcf под юзер2 на машине2 ->sql server на машине3
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF net.tcp: не может загрузить System.Transactions
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]