2012-03-19 4 views
0

Попытка отправить сложный тип между двумя системами с одинаковой базой кода. Они оба знают об одном и том же объекте, который является носителем передачи данных. Однако, когда я передаю объект на потребительский прокси, он появляется как объект в пространстве имен веб-сервисов, а не в приложении.Типы объектов Wcf

Есть ли способ, которым я могу определить, использовать внутренний объект?

[WebMethod] 
public void Run(TransportObject transport) 

появляется в моем приложении под MyNamespace.Webservice.Transport вместо MyNamespace.Objects

+0

'[WebMethod]' не WCF - это ASMX. –

ответ

1

Как говорит Хенк, совместное использование типов в WCF является поведением по умолчанию.

Я оговориться, что за счет расширения на нем и демонстрируя, как достичь его:

Таким образом, вместо того, чтобы иметь Visual Studio генерировать ссылку на службу для вас, вы можете иметь WCF создать прокси-сервер, когда он выполняет с помощью ChannelFactory.

Например:

// Create service proxy on the fly 
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile"); 
var proxy = factory.CreateChannel(); 

// Create data contract 
var requestDataContract = new MyRequestType(); 

// Call service operation. 
MyResponseType responseDataContract = proxy.MyServiceOperation(requestDataContract); 

В приведенном выше примере, IMyServiceContract ваш контракт на обслуживание, а также MyRequestType и MyResponseType ваши контракты данных, которые можно использовать с помощью ссылки на сборку которой служба также ссылки (который определяет эти типы).

1

[WebMethod] подразумевает что это на основе ASMX службы, не является службой WCF ...

Попробуйте снова с [OperationContract] в [ServiceContract]

Совместное использование типов в WCF возможно, я думаю, что это даже поведение по умолчанию.

+0

@marc_s - Да, вы правы. Я отредактирую. –