Remoting IIS and Redirect
От: ShtormX  
Дата: 16.04.06 09:51
Оценка:
Задача такая:
Есть ремотинг сервер который оформлен в виде службы.
Есть IIS на этой же машине. Необходимо чтобы http запросы к ремотинг объектам
уходили к этой службе. Хостинг ремотинг сервера под IIS не предлагать.
Cлужба не может зарегистрировать http канал с 80 портом, его занял IIS.
А хостить ремотинг сервер под IIS мне нельзя.

Написал для этого свой HttpRemotingHandler подглядев искодники microsoft,
но там в реализации метода InternalProcessRequest идет конфигурирование сервера из настроек web.config
Потом ищется канал только что зарегистрированный. Проблема в том что ChannelServices.RegisteredChannels возвращает
каналы зарегистрированные этим приложением, а то что регистрировала моя служба в RegisteredChannels нет.
Если бы достучаться до канала зарегистрированного моей службой то проблемы небыло.
Можно попробовать оформить канал в службе в виде ремотинг объекта а в HttpRemotingHandler стучаться к нему,
но это мне кажется уже извращение. Может есть другие нормальные способы?

Вообщем нужен редирект в службу из под asp.net.
Re: Remoting IIS and Redirect
От: GlebZ Россия  
Дата: 16.04.06 10:05
Оценка:
Здравствуйте, ShtormX, Вы писали:

SX>Задача такая:

SX>Есть ремотинг сервер который оформлен в виде службы.
SX>Есть IIS на этой же машине. Необходимо чтобы http запросы к ремотинг объектам
SX>уходили к этой службе. Хостинг ремотинг сервера под IIS не предлагать.
SX>Cлужба не может зарегистрировать http канал с 80 портом, его занял IIS.
SX>А хостить ремотинг сервер под IIS мне нельзя.
Прочитал несколько раз, ничего не понял.
Ты можешь создавать свое отдельное приложение с Net Remoting и протоколом http. Если приходит запрос с расширением rem, то IIS(точнее ISAPI) будет сам тебе пересылать запросы. И можешь навесить хоть на 80 порт, хоть на любой другой. Изменения в IIS, и вешать какие-то сервера на него, не надо.

С уважением, Gleb.
Re[2]: Remoting IIS and Redirect
От: ShtormX  
Дата: 17.04.06 04:46
Оценка:
IIS не пересылает запросы запущенной службе.
У меня remoting сервер уже оформлен как сервис и запущен и слушает другой http port,
80 он занять не может так как его забрал IIS.
IIS может пересылать запросы в том случае если хостить под ним ремотинг сервер, т.е.
IIS конфигурит из web.config remoting и сам создает remoting сервер.
Мне это не нужно, сервер у меня уже запущен, нужно только переслать этот апрос серверу.
В этом собственно и проблема, как это сделать.
Re: Remoting IIS and Redirect
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.04.06 15:39
Оценка:
Здравствуйте, ShtormX, Вы писали:

SX>Вообщем нужен редирект в службу из под asp.net.


Для редиректа вобщем то никакой asp.net не нужен, достаточно примитивного скрипта на asp, я в инете где то видел. Но это проблему не решит, если у тебя используются не well-known uri. В этом случае внутри ObjRef будет прописан ChannelUri, который, естественно, будет указывать на внутренний порт. И обращение к методам такого ObjRef, естественно, приведет к ошибке. Так что простой редирект не получится, придется писать либо хитрый Channel, либо собственный транспорт.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[2]: Remoting IIS and Redirect
От: ShtormX  
Дата: 18.04.06 05:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ShtormX, Вы писали:


SX>>Вообщем нужен редирект в службу из под asp.net.


AVK>Для редиректа вобщем то никакой asp.net не нужен, достаточно примитивного скрипта на asp, я в инете где то видел. Но это проблему не решит, если у тебя используются не well-known uri. В этом случае внутри ObjRef будет прописан ChannelUri, который, естественно, будет указывать на внутренний порт. И обращение к методам такого ObjRef, естественно, приведет к ошибке. Так что простой редирект не получится, придется писать либо хитрый Channel, либо собственный транспорт.



У меня как раз well-known, я уже почти разобрался как перенаправлять вызовы, сделал HttpHandler,
пока получилось достукиваться до ремотинг сервера получать оттуда response, осталось этот response
правильно оформить и вернуть обратно клиенту.
Re[3]: Remoting IIS and Redirect
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.06 07:52
Оценка:
Здравствуйте, ShtormX, Вы писали:

SX>У меня как раз well-known,


Тогда смысл в ремоутинге? Пользуйтесь веб-сервисами и проблем будет меньше.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[4]: Remoting IIS and Redirect
От: ShtormX  
Дата: 18.04.06 10:54
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ShtormX, Вы писали:


SX>>У меня как раз well-known,


AVK>Тогда смысл в ремоутинге? Пользуйтесь веб-сервисами и проблем будет меньше.



Если бы мне нужен был веб-сервис я бы здесь не написал.
Если я запускаю ремотинг сервер как сервис или как консольное приложение,
то у меня как раз нет никаких проблем, если хостить под iis то мой сервак
не может корректно работать, я получаю в некотрых случаях System.ExecutionEngineException.
Причем ExecutionEngineException вылетает при обращении к com объектам (в консольном приложении и сервисе этого не наблюдается все работает отлично). Поэтому под asp.net я не вижу смысла ничего писать и хостить.

Вопрос еще открыт, может кто нибуть делал что то подобное или знает как побороть ExecutionEngineException.
Re[5]: Remoting IIS and Redirect
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.06 11:07
Оценка:
Здравствуйте, ShtormX, Вы писали:

SX>Вопрос еще открыт, может кто нибуть делал что то подобное или знает как побороть ExecutionEngineException.


Где то втой замечательный СОМ-объект память портит.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[6]: Remoting IIS and Redirect
От: ShtormX  
Дата: 18.04.06 12:50
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ShtormX, Вы писали:


SX>>Вопрос еще открыт, может кто нибуть делал что то подобное или знает как побороть ExecutionEngineException.


AVK>Где то втой замечательный СОМ-объект память портит.


Расскажу что с com объектами тогда, может так выкрутится можно будет.

Вообщем, есть unmanaged com приложение (ComApp), есть managed com написаные под него (ManComObjects),

ComApp работает с документами своего формата (mxd), и представляет набор класcов (ComDocument) для работы с этим документом без запуска ComApp приложения. В документе хранится описание сохранненых объектов как своих родных, так и моих добавленных в него ManComObjects, когда открывается ComDocument мои ManComObjects автоматически создаются (их создание вызывает umanaged код).

В ремотинг сервере идут вызовы

New ComDocument
ComDocument.Open

ComDocument.GetObject(i)
если GetObject(i) мой ManComObjects и ремотинг сервер хостится под iis то ловлю ExecutionEngineException

Если ремотинг сервер офрмлен в виде службы или консоли то все прекрасно работает

Юзерам можно к моему серверу пробится только по http 80

А чтобы работало по 80 надо хостить под iis, под iis нельзя там ExecutionEngineException

Посадил бы свой ремотинг сервер на 80 порт но не могу, iis его сожрал, убрал бы iis с этой машины но нельзя.
iis на другой порт перенапралять мне тоже нельзя.

Вот такая грустная история, сижу и думаю сразу идти к шефу сдаваться или подождать
Re[7]: Remoting IIS and Redirect
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.04.06 13:02
Оценка:
Здравствуйте, ShtormX, Вы писали:

SX>если GetObject(i) мой ManComObjects и ремотинг сервер хостится под iis то ловлю ExecutionEngineException


Очевидно, что, возможно из-за нехватки прав, твой СОМ объект портит память, в результате чего и наблюдается ExecutionEngineException. Разобраться как и почему можешь только ты сам.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[8]: Remoting IIS and Redirect
От: ShtormX  
Дата: 19.04.06 05:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ShtormX, Вы писали:


SX>>если GetObject(i) мой ManComObjects и ремотинг сервер хостится под iis то ловлю ExecutionEngineException


AVK>Очевидно, что, возможно из-за нехватки прав, твой СОМ объект портит память, в результате чего и наблюдается ExecutionEngineException. Разобраться как и почему можешь только ты сам.


С правами все нормально, у меня подозрение в том что aspnet_wp.exe как то криво стартует сервер, может что то с потоками связано. Вообщем ситуация тупиковая. Не используйте комы в ремотинге.
Re[9]: Remoting IIS and Redirect
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.04.06 07:53
Оценка:
Здравствуйте, ShtormX, Вы писали:

SX>С правами все нормально, у меня подозрение в том что aspnet_wp.exe как то криво стартует сервер, может что то с потоками связано.


Знаешь, на этом aspnet_wp работает куча всевозможных приложение, так что вероятность проблемы в нем крайне мала.

SX> Вообщем ситуация тупиковая. Не используйте комы в ремотинге.


Видишь ли — ремоутинг полностью managed, а твоя ошибка свидетельствует о порче памяти. Так что ищи проблемы у себя.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[10]: Remoting IIS and Redirect
От: ShtormX  
Дата: 19.04.06 08:56
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, ShtormX, Вы писали:


SX>>С правами все нормально, у меня подозрение в том что aspnet_wp.exe как то криво стартует сервер, может что то с потоками связано.


AVK>Знаешь, на этом aspnet_wp работает куча всевозможных приложение, так что вероятность проблемы в нем крайне мала.


SX>> Вообщем ситуация тупиковая. Не используйте комы в ремотинге.


AVK>Видишь ли — ремоутинг полностью managed, а твоя ошибка свидетельствует о порче памяти. Так что ищи проблемы у себя.



Ошибка при передачи объекта из одного потока в другой,

GetObject(i) поднимает мой объект, делает return, а там где я его запрашивал, т.е. в ремоутинге получаем ExecutionEngineException

Т.е. просто не можем получить ссылку на объект. Наверное когда хостить по iis как то хитро запускаются потоки,

это уже не мой косяк, и вообще про ошибку ExecutionEngineException ниче толкового не написано, все по разному про нее говорят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.