Могу ли я узнать, какие методы WCF поддерживаются на конечной точке, прежде чем вызывать ее? - PullRequest
0 голосов
/ 19 мая 2010

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

У меня вопрос: как я могу убедиться, что команда доступна на клиенте, прежде чем пытаться ее вызвать?

Я пытался:

  foreach (var od in proxy.Endpoint.Contract.Operations)
  {
    if (od.Name == "MyMethodName")
    {
      hasMethod = true;
      break;
    }
  }

К сожалению, это использует контракт от вызывающего приложения и фактически не описывает реализации на самой конечной точке. В результате он возвращает true, даже если конечная точка не смогла реализовать команду.

1 Ответ

2 голосов
/ 19 мая 2010

Вы никогда не узнаете, пока не попробуете. То, что у вас есть, - это прокси реализованного контракта, но то, что находится на стороне сервера, могло измениться, так как вы его создали / сгенерировали.

Предполагая, что это реализация http / httpws, я полагаю, что вы могли бы позвонить и проверить справочную службу и загрузить файл wsdl. Это скажет вам, какие методы и т. Д. Поддерживаются. Проблема, с которой вы столкнетесь, заключается в том, что, хотя имя метода может быть одинаковым, вам также нужно проверить тип возвращаемого значения и параметры, чтобы убедиться, что это тот же метод и что вы можете вызывать его с прокси у вас есть.

Вот ссылка на управление версиями в WCF:
http://msdn.microsoft.com/en-us/library/ms731060.aspx

Вот ссылка на лучшие практики управления версиями для WCF:
Лучшие практики для управления версиями ваших служб с WCF?

...