2012-06-21 29 views
6

acaba de implementar mi servicio WCF en un servidor aquí en mi empresa con IIS 7.5 y todo parece funcionar bien. Pero cuando configuro mi aplicación cliente y agrego una referencia de servidor al servidor y luego uso este código.WCF aplicación del cliente de servicio que obtiene "Objeto no configurado en una instancia de un objeto"

ServerReference.ServiceClient client = new ServerReference.ServiceClient(); 

var s = client.GetBrand("Audi", false); 

Recibo una excepción que dice "referencia de objeto no establecida en una instancia de un objeto". el objeto s no debe ser nulo (probamos el servicio en localhost donde lo teníamos todo en el mismo proyecto donde funcionó).

Miraste la pila y se ve así.

21.6.2012 16:16:29 

Referencia de objeto no establecida en una instancia de un objeto.

Server stack trace: 
    at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter) 
    at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

¿Alguna sugerencia? P.S La CPU donde se aloja el servicio WCF no tiene estudios visuales, así que no puedo depurarlo

+2

¿Funciona [WcfTestClient] (http://msdn.microsoft.com/en-us/library/bb552364.aspx) en el servicio alojado? Restrinjala para ver si es su implementación o si el servicio no se inicializó.El contrato también puede haber cambiado, lo cual (dependiendo de cuándo obtuvo los metadatos por última vez) podría causar que el servicio no creara una instancia. –

Respuesta

2

Como he sugerido en un comentario, asegúrese de que puede obtener los datos usando WcfTestClient. Esto confirma que el servicio está funcionando y casi realiza pruebas unitarias de la llamada al método para garantizar que funcione desde la perspectiva del cliente.

En segundo lugar, (a menos que lo diluya para publicar en SO) use el correct WCF call method para evitar este tipo de problemas. Una vez que introduce una dependencia, siempre es una buena idea anticiparse a las fallas (aunque su servicio, la conexión a Internet del cliente u otras).

Sin saber nada más sobre su proyecto, es difícil describir cómo solucionarlo. Factores como WSDL antiguo, configurado incorrectamente * .config, punto final no expuesto en el servidor y otros problemas podrían ser la raíz del problema, pero dado lo que has mostrado, no tengo idea de cuál podría ser.

Si puede proporcionar más información, me complacerá actualizar mi respuesta con más consejos que pueda tener. Por ahora, eche un vistazo a enabling WCF tracing en el servidor para que pueda mirar hacia atrás a través de los logs y ver si hay algo afoul en el extremo del servidor (además de pasar por la llamada de su cliente y verificar).

+0

el seguimiento de WCF actualmente está funcionando ahora (no entiendo muy bien por qué) ... de acuerdo a mí, la investigación de hoy tiene algo que ver con el enlace. Una cosa que noto y que es interesante es que cuando estoy usando un cliente de prueba y llamo al servicio que está en un servidor local y lo llamo con un parámetro nulo, devuelve el mismo error que el servicio alojado de IIS (con cada parámetro). ¿Hay algo que considerar, p.s, hay algo más que quieras que publique aquí para comprender mejor – user1279173

1

No tiene que depurarlo. Simplemente agregue la configuración de seguimiento de WCF en el archivo web.config y podrá obtener información sobre el error de origen. Ver http://msdn.microsoft.com/en-us/library/ms733025.aspx

+0

copy-id el código y puteado en mi webconfig, y no pasó nada? No se creó ningún archivo o algo así – user1279173

+0

¿Está ejecutando el servicio WCF en un grupo de aplicaciones con una identidad diferente? De ser así, debe asegurarse de que tenga todos los derechos de control en el directorio en cuestión. Creo que con el rastreo de nivel de información, puede probar simplemente navegando por el servicio, puede necesitar un nivel detallado. – Rich

0

Tengo el mismo problema en mi proyecto, en mi caso encontré que la excepción se produjo en el constructor del servicio, pero solo se desencadena cuando llamo a cualquier método.

0

Configure los orígenes de rastreo para emitir trazas y establecer niveles de rastreo, establecer el seguimiento y la propagación de la actividad para que admita la correlación de seguimiento de extremo a extremo y establecer detectores de trazas para acceder a los rastreos.

Windows Communication Foundation (WCF) da salida a los siguientes datos para el seguimiento de diagnóstico: Las huellas de los hitos del proceso a través de todos los componentes de las aplicaciones, tales como las llamadas de operación, las excepciones de código, advertencias y demás eventos de procesamiento significativos. Eventos de error de Windows cuando la función de seguimiento no funciona correctamente. Ver Event Logging in WCF.

Cuestiones relacionadas