WCF и перемещение прокси-кода в DLL. Является ли это возможным? - PullRequest
3 голосов
/ 20 апреля 2009

похоже, что я не могу успешно переместить мой прокси-код WCF в отдельную DLL (в отличие от EXE, как я вижу во всех примерах).

Причина, по которой я пытаюсь это сделать, заключается в том, что я хотел бы, чтобы мой прокси-код вызывался разными клиентами (возможно, неуправляемым кодом), которые могут ничего не знать о WCF, но просто должны иметь доступ к сервисам (через Фасад может быть выставлен прокси?).

Всякий раз, когда я перемещаю следующий код, который создает новый прокси-сервер, в другой проект VS в рамках того же решения, я получаю страшное " Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт 'localhost.IRemoteCommandService' в клиенте ServiceModel раздел конфигурации "исключение .

localhost.RemoteCommandServiceClient proxy = 
    new localhost.RemoteCommandServiceClient();

Один и тот же код работает плавно, когда используется в методе Main в том же проекте, где находится прокси-код (автоматически генерируется из Visual Studio).

Есть идеи? Я надеюсь, что клиентскому коду моего прокси-сервера не нужно иметь конфигурацию XML модели сервиса в качестве прокси, потому что это побьет цель, с которой я в первую очередь перемещаю прокси-код WCF в DLL.

Спасибо, Stefano

Ответы [ 2 ]

4 голосов
/ 20 апреля 2009

Конечные точки действительно обычно указываются в файле конфигурации. Вы должны посмотреть на данные serviceModel в файле конфигурации и скопировать их в вызывающий app.config - или вам нужно использовать более подробный способ создания прокси в вашем коде (то есть указание адреса, привязки, конфигурации и т. Д. С помощью кода конструкторам).

2 голосов
/ 20 апреля 2009

Если вы не хотите, чтобы конечная точка конфигурировалась на клиенте, вам придется встроить ее в вашу dll-прокси, указав все в коде.

Другой вариант - использовать динамический прокси, такой как one , что позволит вам не использовать serviceModel в ваших клиентских приложениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...