2013-12-01 3 views
2

У меня есть служба WCF и клиент, использующий nettcpBinding (фреймворк 4.0). Клиент запрашивает изображение, сервер идет и просматривает это изображение и отправляет его обратно клиенту с помощью обратного вызова.WCF nettcp Callback не работает при развертывании

Служба WCF размещена внутри приложения Windows Forms. У меня есть запись всех действий на экран для тестирования.

На моей машине dev система работает безупречно. Я могу запросить изображение из приложения службы, развернутого на тестовом сервере, и оно возвращается и отображается на моем клиенте.

Как только я копирую клиента на другой компьютер (доступ к тому же серверу), изображение не будет получено. Наблюдая за выходом на сервере, клиент подключается, запросы и сервер получает изображение. Затем сервер имеет несколько сообщений журнала, когда инициируется обратный вызов, и изображение сериализуется и отправляется. Все они регистрируются в обычном режиме, как и на рабочем компьютере Dev. Это просто, что изображение никогда не отображается на клиенте. Клиент все еще подключен к серверу, потому что, если я закрываю клиент, я получаю сообщение «отключено» на сервере.

Я разместил в первой строке метода обратного вызова на стороне клиента почтовый ящик для тестирования, но метод никогда не вызывается. Нет брандмауэров. Я попробовал запустить клиент под учетной записью администратора, без разницы. У меня буквально есть клиентское приложение в папке, я запускаю его в окне разработчика, он работает, копирует его на другой компьютер, ничего.

Как мне диагностировать, в чем проблема? Любые общие причины?

Редактировать: Я должен упомянуть. Приложение-служба работает на компьютере внутри домена, неработающий клиент также находится внутри домена. Моя машина-разработчик находится за пределами домена, у меня в настоящее время установлена ​​защита «none» в привязке.

ответ

3

Я, наконец, понял это.

В методе обратного вызова я использовал атрибут IsOneWay=True, который маскировал исключение на сервере, когда он писал клиенту.

Клиент фактически вызывал исключение, потому что свойство ReaderQuote.MaxArrayLength было слишком маленьким для данных изображения. Я все еще не понимаю, почему он работал на машине Dev, но не на других рабочих станциях.

Я просто добавил новое свойство к своему пользовательскому связыванию, чтобы увеличить «MaxArrayLength» до чего-то подходящего, и он сработал.

Смежные вопросы