Не можете использовать WCF NetPeerTcpBinding в ASP.NET? - PullRequest
2 голосов
/ 22 февраля 2010

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

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

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

[InvalidOperationException: System event notifications are not supported under the current context. Server processes, for example, may not support global system event notifications.]
   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +10259418
   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +539
   // My code here where I call the proxy object's method to start the WCF call

Хм, а почему бы и нет? Кажется, это было бы чрезвычайно полезно!

Есть ли способ обойти это?

Ответы [ 2 ]

1 голос
/ 06 марта 2010

На какой версии IIS работает ваша служба (при условии, что IIS)? IIS 6 немного более ограничен, чем IIS 7 - он поддерживает только активацию HTTP. Аналогично, если вы пытаетесь запустить одноранговый клиент из IIS 6, он может быть заблокирован по той же причине - IIS не может перенаправить ответы на правильный рабочий процесс.

Вы всегда можете реализовать службу как службу Windows на веб-сервере и использовать именованные каналы для связи с вашим сайтом ASP.NET. (Служба Windows будет размещать одноранговую конечную точку и конечную точку именованного канала, а сайт будет использовать клиент именованного канала. Служба будет работать как один экземпляр с использованием атрибута [ServiceBehavior].

0 голосов
/ 18 июля 2010

Я не уверен, что это возможно из-за того, как привязка хранит свой контекст.

Я бы предложил иметь нормальную службу http wcf и зарегистрировать каждый хост в базе данных конфигурации, или даже использовать тему и публиковать события, которые должен обрабатывать веб-сервер.

...