.NET remoting - BadImageFormatException
От: Cadet  
Дата: 08.07.10 20:23
Оценка:
Доброго времени суток други.

До сих пор не приходилось сталкиваться с remoting, но все когда-то случается в первый раз, и была поставлена передо мной задача. Есть сервис, хостящий remoting объект, про который известно, что он реализует определенный интерфейс. Есть клиент, который должен дернуть этот объект. Порывшись в мануалах, состряпал следующее:

Interfaces, эта сборка есть и у клиента и у сервиса:
// Об этом интерфейсе знает клиент, что где-то на сервисе живет объект, его реализующий
public interface IBusinessObject
{
    BusinessData GetBusinessData();
}

[Serializable]
public class BusinessData
{    
}


Service:
// Объект данного класса хостится сервисом и должен быть дернут через интерфейс со стороны клиента
public class BusinessObject : MarshalByRefObject, IBusinessObject
{
    public BusinessData GetBusinessData()
    {
        return new BusinessData();
    }
}

public class HostService : ServiceBase
{
    protected override void OnStart(string[] args)
    {
        RemotingConfiguration.Configure(Assembly.GetExecutingAssembly().Location + ".config", false);
        base.OnStart(args);
    }

    public static void Main(string[] args)
    {
        ServiceBase.Run(new HostService());         
    }
}


К сервису приложен следующий конфиг:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.runtime.remoting>
    <application>
      <service>
        <wellknown mode="SingleCall" type="Service.BusinessObject, Service" objectUri="BusinessObject" />
      </service>
      <channels>
        <channel ref="tcp" port="9000" />
      </channels>
    </application>
  </system.runtime.remoting>
</configuration>


Регистрируем сервис, запускаем, с помощью netstat видим что он сел слушать порт 9000. Пишем клиента:
class Program
{
    static void Main(string[] args)
    {
        var obj = (IBusinessObject)Activator.GetObject(typeof(IBusinessObject), "tcp://localhost:9000/BusinessObject");
        var bd = obj.GetBusinessData();
    }
}


Запускаем, и на вызове функции GetBusinessData получаем

System.BadImageFormatException: Could not load file or assembly 'Interfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Была сделана попытка загрузить программу, имеющую неверный формат.

Грешным делом подумал сначала, что рядом с клиентом надо положить и сборку с сервисом (что вобще говоря неприемлимо), но пробный эксперимент результата не поменял . Что я упускаю?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.