Showing posts with label servicemodel. Show all posts
Showing posts with label servicemodel. Show all posts

Tuesday, November 04, 2008

InvalidOperationException ServiceModel

Cuando trabajas con WCF utilizando diferentes proyectos en tu solucion, para organizar correctamente la arquitectura del producto de software que vienes construyendo, te encontraras con algunos detallitos que debes superar.

Pues el Visual Studio .NET 2008 te ayuda en lo posible pero NO resuelve por defecto todos tus problemas ;)

En fin, si realizas algun Service References para un EndPoint sobre WCF desde un proyecto del tipo Class Library, el Visual Studio .NET 2008 creara un app.config en dicho proyecto con ciertos elementos de configuracion que despues deberas hacer COPY & PASTE al web.config de tu proyecto ASP.NET.

Dichos elementos de configuracion deberan ser colocados dentro del <system.serviceModel> de tu web.config.

Y tendras tantos, como Services References consumas en tu solucion.

De lo contrario al ejecutar tu aplicativo recibiras este mensaje, en el momento de ejecutar alguna funcionalidad expuesta en aquellos EndPoints, similar a este:

Could not find default endpoint element that references contract 'Brokers.Security.EndPointSoap' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

Claro, si haces tus Service References dentro del mismo proyecto ASP.NET jamas te encontraras con este mensaje.

Pero muy probablemente pierdas escalabilidad.

Windows Communication Foundation WCF

Cuando trates de consumir algun EndPoint sobre Windows Communication Foundation - WCF, el proyecto del tipo Class Library -desde donde realizas el Service References a dicho EndPoint publicado en algun servidor de la red- del Visual Studio .NET agregara un par de assemblies automaticamente: System.ServiceModel y System.Runtime.Serialization.

Bueno, para todo proyecto dentro de tu solucion que haga referencia al proyecto que realiza el Service Reference deberas -por ende- hacer una referencia manual a dichos assemblies.

De lo contrario recibiras un error al hacer build a tu aplicativo, similar a este:

The type System.ServiceModel.ClientBase'1<T0>' is defined in a assembly that is not referenced.

o el otro conocido mensaje de error:

The type System.Runtime.Serialization.IExtensibleDataObject is defined in an assembly that is not referenced.

Pequeño detalle que tendrias que tomar en cuenta :)