Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Remoting + Windows Service, Нельзя получить доступ к объекту 
V
    Опции темы
r4g3
Дата 10.1.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.1.2008

Репутация: нет
Всего: нет



На сервере висит служба, с remote - объектом (Singleton). При вызове на самом сервере, клиентская программа с ним работает. Но если запустить клиента на удаленной машине (входящей в домен), то клиент не может получить доступа. Файрволла нет.
PM MAIL   Вверх
mr.DUDA
Дата 10.1.2008, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 2
Всего: 232



Покажите конфиги клиента и сервера.


--------------------
user posted image
PM MAIL WWW   Вверх
r4g3
Дата 12.1.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.1.2008

Репутация: нет
Всего: нет



На сервере remoting инициализируется когда происходит старт сервера
Код

protected override void OnStart(string[] args)
        {
            EventLog.WriteEntry("Remote service: on start");            
            _channel = new HttpServerChannel(8008);
            EventLog.WriteEntry("Remote service: TCP channel started");
            ChannelServices.RegisterChannel(_channel,false);            
            EventLog.WriteEntry("Remote service: Register channel");
            RemotingConfiguration.RegisterWellKnownServiceType(
             typeof(Transport),
             "RemoteService/Transport",
             WellKnownObjectMode.Singleton); //2
            base.OnStart(args);
            EventLog.WriteEntry("Remote service: Leave it");
        }


На клиенте
Код

         HttpClientChannel channel = new HttpClientChannel();
         ChannelServices.RegisterChannel(channel, false);
            try
            {                
                Transport rt = (Transport)Activator.GetObject(
                     typeof(Transport),
                     "http://192.168.10.19:8008/RemoteService/Transport");
                rt.SetCaller(Environment.MachineName);
                textBox1.Text += rt.GetCardID().ToString() + System.Environment.NewLine                                
            }
            catch (Exception exp)
            {
            ...
            }           
            ChannelServices.UnregisterChannel(channel); 

PM MAIL   Вверх
tol05
Дата 12.1.2008, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 6
Всего: 170



а в урле перед IP имя домена писать не нужно?


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
r4g3
Дата 13.1.2008, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.1.2008

Репутация: нет
Всего: нет



 smile Первый раз о таком слышу! Да и тем более проблема возникает, когда сервер становится сервисом Windows. Когда он работает как обычное приложение, проблем не возникает. 
tol05, можете уточнить как это сделать? Предполагаю, что там какой то специальный синтаксис, для вставки имени домена.
PM MAIL   Вверх
tol05
Дата 13.1.2008, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 6
Всего: 170



имя домена (если я не ошибаюсь) пишется как
Transport rt = (Transport)Activator.GetObject(typeof(Transport), "http://MyDomain/192.168.10.19:8008/RemoteService/Transport");

но вот теперь меня насторожила фраза 
Цитата(r4g3 @  12.1.2008,  23:17 Найти цитируемый пост)
когда сервер становится сервисом Windows

раньше этой информации не было smile

Под какой учетной записью работает сервис? Есть ли у этой учетной записи права на сетевую работу? Какую пишет ошибку?


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
r4g3
Дата 13.1.2008, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.1.2008

Репутация: нет
Всего: нет



Сервис работает вообще при старте Windows, клиент сервера не видит.  На учетной записи с правом работы в сети то же самое.

Unable to connect to the remote server
Void HandleReturnMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage)

Server stack trace: 
   at System.Net.HttpWebRequest.GetRequestStream()
   at System.Runtime.Remoting.Channels.Http.HttpClientTransportSink.ProcessAndSend(IMessage msg, ITransportHeaders headers, Stream inputStream)
   at System.Runtime.Remoting.Channels.Http.HttpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream)
   at System.Runtime.Remoting.Channels.SoapClientFormatterSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at RemoteService.Transport.SetCaller(String callerName)
   at CallRemoteObject.Form1.button1_Click(Object sender, EventArgs e) in E:\Projects\CallRemoteObject\CallRemoteObject\Form1.cs:line 30


Это сообщение отредактировал(а) r4g3 - 14.1.2008, 13:27
PM MAIL   Вверх
r4g3
Дата 15.1.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.1.2008

Репутация: нет
Всего: нет



Может код инсталятора чуть разяснит ситуацию:
Код

 [RunInstallerAttribute(true)]
    public class WindowsServiceInstaller : Installer
    {       
        public WindowsServiceInstaller()
        {            
            ServiceProcessInstaller serviceProcessInstaller =
                               new ServiceProcessInstaller();
            ServiceInstaller serviceInstaller = new ServiceInstaller();

            serviceProcessInstaller.Account = ServiceAccount.NetworkService;            
            serviceProcessInstaller.Username = null;
            serviceProcessInstaller.Password = null;

            serviceInstaller.DisplayName = "My New C# Windows Service 0.9";            
            serviceInstaller.StartType = ServiceStartMode.Automatic;
           
            serviceInstaller.ServiceName = "My Windows Service";

            Installers.Add(serviceProcessInstaller);
            Installers.Add(serviceInstaller);
        }

PM MAIL   Вверх
tol05
Дата 15.1.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 6
Всего: 170



а если на удаленном компьютере запустить клиента не как службу, а как обычное приложение, под твоей учетной записью? Работает?

Кстати, я тут подумал, поискал в инете, в домене есть прокси-сервер, через который вы все работаете. Почитай это, может поможет smile


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
r4g3
Дата 15.1.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.1.2008

Репутация: нет
Всего: нет



Да как обычное приложение работает.
 
Пошел знакомится  с текстом.
PM MAIL   Вверх
r4g3
Дата 15.1.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.1.2008

Репутация: нет
Всего: нет



 По моему это не то. У меня не веб сервис, а виндовая служба с ремоут объектом. Она в сетке на сервере в фоновом режиме работать должна. Брал я вот отсюда, что это можно сделать: http://www.codeproject.com/KB/dotnet/winservicehost.aspx . 
Но как то оно не хочет работать со вторым фреймворком.
PM MAIL   Вверх
arilou
Дата 16.1.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 3
Всего: 61



r4g3, проблема может быть связана с тем, что сервис работает под не под доменной учетной записью. Попробуй сделать админскую запись, и запускает сервис под ней. 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
r4g3
Дата 17.1.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.1.2008

Репутация: нет
Всего: нет



Да если установить на сервер и под учетной записью администратора все заработало.
PM MAIL   Вверх
arilou
Дата 17.1.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 3
Всего: 61



r4g3, рад был помочь.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.1149 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.