2012-02-17 11 views
13

En mi proyecto, he creado una aplicación web que tiene un servicio web. En la misma solución, he agregado otra aplicación web. Estoy consumiendo el servicio web desde esta aplicación. He agregado una referencia web usando agregar referencia web usando la opción de referencia web. Quiero depurar la clase de proxy generada (cuando agrego una referencia web). Puse un depurador en la clase proxy, pero no funcionó. Luego copié la clase proxy y creé una nueva clase en la aplicación web cliente con el mismo contenido y el mismo y borré la referencia web. Pero aún no puedo depurar la clase de proxy. ¿Cómo puedo depurar la clase proxy? Por favor ayuda.clase de proxy del servicio web de depuración en C#

+0

¿Cómo se aloja el servicio web? – Bernard

+0

Según mi conocimiento limitado, el servicio web y las clases que hacen uso de sus operaciones lo hacen mediante la implementación de una interfaz. ¿Intentó implementar una interfaz para este propósito? –

+0

¿Desea depurar el proxy en sí o desea poder depurar el código en el servicio (ingresar en él)? –

Respuesta

16

Trate de no incluir [DebuggerStepThroughAttribute()] del código generado

3

¿Ha probado esta función? System.Diagnostics.Debugger.Launch();

En lugar de poner un depurador, use la función anterior, esto podría resolver su problema.

Tal como se desea depurar una prueba de función()

public bool test() 
{ 
System.Diagnostics.Debugger.Launch(); 
//..put it on top of the function 
} 
7

En Visual Studio 2010 se puede establecer un punto de ruptura (lo que obviamente han intentado). Pero intente ejecutar la solución de servicio web haciendo clic con el botón derecho en su aplicación y seleccione depurar y haga clic en iniciar nueva instancia.

La depuración es justo por debajo del conjunto como la puesta en marcha opción de proyecto

+0

+1 a esto. Creo que no ha comenzado ambas aplicaciones. –

+1

Pero también tenga en cuenta que hay una diferencia entre la ejecución normal y la nueva instancia de inicio. Tuve este problema muchas veces (ambos se ejecutan pero el servicio no está depurando), esta es la solución. –

+1

Además, tal vez se podría mencionar que los valores predeterminados están produciendo un protocolo de comunicación de extremo a extremo sobre la marcha que también se encuentra en la carpeta de depuración para los ejecutables. A veces realmente útil ... y como otra adición, si tienes ambos proyectos en la misma solución y vs studio, para importar el servicio, realmente deberías iniciar el binario también desde la carpeta bin, de esta manera puedes hacer clic derecho en el Proyecto -> Agregar referencia de servicio y usar el wizzard. – Kjellski

5

La forma en que normalmente hago esto es para albergar la aplicación cliente y aplicación de servicio web de alojamiento en IIS local. Deberías tener dos directorios virtuales de aplicaciones. Use un grupo de aplicaciones separado para cada aplicación. Cuando se realiza una solicitud exitosa desde la aplicación cliente a la aplicación de servicio web, debe haber dos procesos de trabajo (procesos w3wp.exe). Debería poder conectar su depurador al proceso w3wp correcto para depurarlo.

+0

+1 solo se conecta a ambos procesos y establece puntos de interrupción. hecho. –

+0

+1 Eso es lo que hago cuando depuro servicios. –

2

Establece un punto justo antes de hacer una llamada de servicio web, y luego Step Into (F11) el servicio web llamarse a sí misma. Una vez dentro del servicio web, puede establecer más puntos de interrupción donde quiera.

3

Visual Studio 2008 \ 2010:

  1. Establecer <compilation debug="true"> en su aplicación de servicio web

  2. Vaya a Herramientas \ Opciones, luego depuración \ General y desactive Habilitar Sólo mi código (sólo logró)

  3. Configure los puntos de interrupción en el proxy c lass (para el servicio web establece un punto de interrupción en la invocación y otro en la línea de retorno)

    Depuración como de costumbre.

    Si ves algo como solicitud paso hacia dio como resultado automático de paso a lo largo de una propiedad u operador, sólo tienes que seguir las instrucciones (haga clic derecho en la línea, desactive "Paso sobre las propiedades y los operadores" o "Paso en específico ... ").

    enter image description here
2

Como complemento a otras respuestas, también puede hacer clic en la solución y seleccionar "Establecer Proyectos de inicio ..."

Bajo el Proyecto Común Propiedades/De inicio, seleccione el opción de radio para "Proyectos de inicio múltiples:" y luego para su servicio web y proyectos de proxy seleccione Acción "Inicio".

La depuración debería iniciar ahora el depurador en ambos proyectos cada vez que pulse Ejecutar.

1

añadir en su código (en C#):

System.Diagnostics.Debugger.Launch(); 

Comprobar si se construye su proyecto como "Solución Configuraciones: Depuración".

Cuestiones relacionadas