В вашем файле конфигурации что-то не так.
Скорее всего, ваша сборка неверна. Например, если ваш файл конфигурации выглядит так:
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown
type="Foo.MyService, WRONGASSEMBLY"
url="tcp://localhost:33000/MyServiceUri" />
</client>
</application>
</system.runtime.remoting>
</configuration>
Все будет скомпилировано и запущено, но вместо удаленной копии вы будете использовать локальную копию объекта. Сборка в файле конфигурации должна быть сборкой, в которой находится ваш объект. Поэтому, если вы поместите объект в общую сборку и будете ссылаться на нее, общей сборкой будет нужная вам сборка.
Если вам не хочется создавать общую сборку, вы даже можете включить исходный файл, содержащий ваш объект, в оба проекта, но, что удивительно, сборка, которую вы поместите в файл конфигурации, будет вашей КЛИЕНТ сборка (не сервер).
Другими словами, сборка, упомянутая в файле конфигурации, сообщает .NET, какой объект в вашем коде должен быть перенаправлен в удаленное местоположение, а НЕ в то место, где находится объект (для этого и нужен «URL»). «namespace.typename, assembly» полностью описывает объект, поэтому удаленное взаимодействие может переключить новый вызов объекта на создание прокси.
Здесь есть несколько хороших примеров:
http://www.codeproject.com/KB/WCF/net_remoting.aspx