Tutorial: Crear y usar un servicio Web ASP.NET en Visual Web Developer

Actualización: noviembre 2007

Además de permitir la creación de páginas Web, Microsoft Visual Studio también permite crear servicios Web que utilizan XML en ASP.NET. Crear un servicio Web en Visual Studio es similar a crear una página Web. También se puede utilizar la herramienta de desarrollo Web Microsoft Visual Web Developer para hacer referencia a servicios Web que están en una solución de Visual Web Developer y utilizarlos en el equipo local o en un directorio UDDI local o externo. En este tutorial, creará el servicio Web en una solución y lo utilizará en otra.

Las tareas ilustradas en este tutorial incluyen:

  • Crear un servicio Web XML simple en Visual Web Developer.

  • Crear un sitio Web independiente que utiliza el servicio Web.

Requisitos previos

Para poder completar este tutorial, necesitará:

  • Microsoft Internet Information Services (IIS) instalado localmente en el equipo.

Crear un servicio Web bajo la raíz de IIS

Cree un servicio Web y una página nuevos siguiendo estos pasos.

Nota:

Debe utilizar un sitio Web de IIS para este tutorial.

Para crear un servicio Web

  1. Abra Visual Web Developer.

  2. En el menú Archivo, haga clic en Nuevo sitio Web.

    Aparece el cuadro de diálogo Nuevo sitio Web.

  3. En Plantillas instaladas de Visual Studio, haga clic en Servicio Web ASP.NET.

  4. Haga clic en Examinar.

  5. Haga clic en IIS local.

  6. Haga clic en Sitio Web predeterminado.

  7. Haga clic en Crear nueva aplicación Web.

    Visual Web Developer crea una nueva aplicación Web de IIS.

  8. Escriba el nombre TemperatureWebService.

  9. Haga clic en Abrir.

    Aparece el cuadro de diálogo Nuevo sitio Web, con el nombre del nuevo sitio Web en la lista Ubicación situada más a la derecha. La ubicación incluye el protocolo (http://) y la ubicación (localhost). Esto indica que está trabajando con un sitio Web de IIS local.

  10. En la lista Lenguaje, haga clic en el lenguaje de programación con el que prefiera trabajar.

    El lenguaje de programación que ha elegido será el lenguaje predeterminado del sitio Web. Sin embargo, puede utilizar más de un lenguaje en la misma aplicación Web si crea páginas y componentes con lenguajes de programación diferentes. Para obtener más información sobre cómo crear componentes utilizando lenguajes diferentes, vea Carpetas de código compartido en sitios Web ASP.NET.

  11. Haga clic en Aceptar.

    Visual Web Developer crea el nuevo servicio Web y abre una nueva clase denominada Service, que es el servicio Web predeterminado. Sin embargo, en el procedimiento siguiente creará un nuevo servicio Web con un nombre especificado y no utilizará la clase Service.

  12. Cierre la clase Service.

Crear el servicio Web

Creará un servicio Web que convierte la temperatura de Fahrenheit en Celsius y viceversa.

Para crear el servicio Web

  1. En el Explorador de soluciones, haga clic con el botón secundario del mouse en el nombre del sitio Web (https://localhost/TemperatureWebService) y, a continuación, haga clic en Agregar nuevo elemento.

  2. En Plantillas instaladas de Visual Studio, haga clic en Servicio Web y, a continuación, en el cuadro Nombre, escriba Convert.

  3. Asegúrese de que está activada la casilla Colocar el código en un archivo independiente y, a continuación, haga clic en Agregar.

    Visual Web Developer crea un nuevo servicio Web que se compone de dos archivos. Convert.asmx, que apunta al código del servicio Web, es el archivo que se puede invocar para llamar a los métodos del servicio Web. El propio código está en un archivo de clase en la carpeta App_Code (Convert.vb, Convert.cs o Convert.jsl, dependiendo del lenguaje de programación). El archivo de código contiene una plantilla para un servicio Web y código para un método de servicio Web.

Creará dos métodos en el servicio Web. El primer método convierte las temperaturas Fahrenheit en Celsius y el segundo convierte las temperaturas Celsius en Fahrenheit.

Para crear los métodos de conversión

  1. Agregue el código siguiente dentro de la clase, después del método HelloWorld:

        <System.Web.Services.WebMethod()> _
    Public Function FahrenheitToCelsius(ByVal Fahrenheit As Double) _
            As Double
            Return ((Fahrenheit - 32) * 5) / 9
        End Function
    
        <System.Web.Services.WebMethod()> _
            Public Function CelsiusToFahrenheit(ByVal Celsius As Double) _
                As Double
            Return ((Celsius * 9) / 5) + 32
        End Function
    
    [System.Web.Services.WebMethod()]
    public double FahrenheitToCelsius(double Fahrenheit)
    {
        return ((Fahrenheit - 32) * 5) / 9;
    }
    
    [System.Web.Services.WebMethod()]
    public double CelsiusToFahrenheit(double Celsius)
    {
        return ((Celsius * 9) / 5) + 32;
    }
    

    Observe que los nombres de función se preceden con un atributo ([System.Web.Services.WebMethod()] o <System.Web.Services.WebMethod()>) como parte de la declaración de función.

  2. Después de haber escrito las funciones, guarde el archivo.

A continuación, puede probar el servicio Web en Visual Web Developer.

Para probar el servicio Web

  1. En el Explorador de soluciones, haga clic en Convert.asmx y, a continuación, presione CTRL+F5.

    Se invoca el servicio Web y aparece en el explorador una página que muestra los métodos que el servicio Web expone.

  2. Haga clic en CelsiusToFahrenheit, que llama al método.

    Aparece una página que le solicita valores de parámetros para el método CelsiusToFahrenheit.

  3. En el cuadro Celsius, escriba 100 y, a continuación, haga clic en Invocar.

    Aparece una nueva ventana que muestra la página XML que el servicio Web devuelve cuando se invoca al método CelsiusToFahrenheit. Aparece el valor 212 en la página XML.

  4. Cierre el explorador que contiene los resultados del método.

  5. En el explorador original, haga clic en Atrás para volver a la lista de métodos.

  6. Haga clic en FahrenheitToCelsius y asegúrese de que el método devuelve los resultados que espera.

    Si escribe 212, el método FahrenheitToCelsius devolverá 100.

  7. Cierre el explorador.

Ha terminado de crear el servicio Web. El paso siguiente es utilizarlo.

Utilizar el servicio Web

Ahora que tiene un servicio Web, creará un sitio Web donde hará referencia al servicio que ha creado y lo utilizará. En el tutorial, creará un sitio Web independiente que tiene una página donde podrá iniciar los métodos del servicio Web que acaba de crear.

Para crear un sitio Web para utilizar el servicio Web

  1. En el menú Archivo, haga clic en Nuevo sitio Web.

  2. En Plantillas instaladas de Visual Studio, haga clic en Sitio Web de ASP.NET.

  3. Haga clic en Examinar.

  4. Haga clic en IIS local.

  5. Haga clic en Sitio Web predeterminado.

  6. Haga clic en Crear nueva aplicación Web.

    Visual Web Developer crea una nueva aplicación Web de IIS.

  7. Escriba el nombre TemperatureWeb.

  8. Haga clic en Abrir.

  9. En la lista Lenguaje, haga clic en el lenguaje de programación con el que prefiera trabajar.

  10. Haga clic en Aceptar.

    Visual Web Developer crea un nuevo sitio Web de IIS local y una nueva página denominada Default.aspx.

Agregar el servicio Web como un componente

El servicio Web es un componente al que puede hacer referencia en su aplicación. Por consiguiente, debe crear una referencia a él.

Para crear una referencia al servicio Web

  1. En el menú Sitio Web, haga clic en Agregarreferencia Web.

    Aparecerá el cuadro de diálogo Agregar referencia Web, tal y como se muestra en la siguiente captura de pantalla.

    Agregar referencia Web (Cuadro de diálogo)

  2. En la lista Dirección URL, escriba la dirección URL siguiente para el servicio Web y, a continuación, haga clic en Ir:

    https://localhost/TemperatureWebService/Convert.asmx

    Cuando Visual Web Developer encuentra el servicio Web, aparece información sobre el servicio Web en el cuadro de diálogo Agregar referencias Web.

    Nota:

    Si no puede agregar una referencia a un servicio Web, podría deberse a que el servidor proxy no está configurado correctamente. En Microsoft Internet Explorer, en el menú Herramientas, haga clic en Opciones de Internet, haga clic en Conexiones y, a continuación, en Configuración LAN. Active la casilla No usar servidor proxy para direcciones locales. Además, establezca la dirección del servidor proxy en el nombre exacto del servidor proxy en lugar de permitir que Internet Explorer lo detecte. Para obtener más información, póngase en contacto con el administrador de la red.

  3. Haga clic en uno de los vínculos de método.

    Aparece la página de prueba para el método.

  4. Haga clic en Agregar referencia.

    Visual Web Developer crea una carpeta App_WebReferences y le agrega una carpeta para la nueva referencia Web. De manera predeterminada, se asigna un espacio de nombres a las referencias Web correspondiente al nombre de su servidor (en este caso, localhost). Anote el nombre del espacio de nombres de la referencia Web. En la carpeta, Visual Web Developer agrega un archivo .wsdl que hace referencia al servicio Web. También agrega archivos de compatibilidad, como archivos de descubrimiento (.disco y .discomap), que incluyen información sobre la ubicación del servicio Web.

    Nota:

    Si el nombre de servidor del servicio Web contiene caracteres que no se pueden utilizar para un nombre de clase, por ejemplo un guión (-), Visual Web Developer los convierte en un carácter de subrayado (_). Por consiguiente, el espacio de nombres de Visual Web Developer para el servicio Web podría no coincidir exactamente con el nombre del servidor.

Ahora puede utilizar el servicio Web. En este tutorial, agregará controles a Default.aspx y, a continuación, programará los controles para convertir una temperatura especificada en Fahrenheit o Celsius. Cuando ejecute la página, tendrá la apariencia siguiente:

Página de conversión de temperatura

Para llamar a los métodos del servicio Web

  1. Abra la página Default.aspx y cambie a la vista Diseño.

  2. En el grupo Estándar del Cuadro de herramientas, arrastre los controles siguientes a la página y establezca sus propiedades como se indica:

    Control

    Propiedades

    Textbox

    ID: TemperatureTextbox

    Text: (vacío)

    Button

    ID: ConvertButton

    Text: Convert

    Label

    ID: FahrenheitLabel

    Text: (vacío)

    Label

    ID: CelsiusLabel

    Text: (vacío)

  3. Opcionalmente, agregue texto a la página para los títulos.

    En este tutorial, el diseño de la página no es importante.

  4. Haga doble clic en ConvertButton a fin de crear un controlador de eventos para el evento Click.

  5. Asegúrese de que el código del controlador de eventos coincida con el código del siguiente ejemplo.

    Dim wsConvert As New localhost.Convert()
    Dim temperature As Double
    temperature = System.Convert.ToDouble(TemperatureTextbox.Text)
    FahrenheitLabel.Text = "Fahrenheit To Celsius = " & _
        wsConvert.FahrenheitToCelsius(temperature).ToString()
    CelsiusLabel.Text = "Celsius To Fahrenheit = " & _
        wsConvert.CelsiusToFahrenheit(temperature).ToString()
    
    protected void ConvertButton_Click(object sender, EventArgs e)
    {
        localhost.Convert wsConvert = new localhost.Convert();
        double temperature =
            System.Convert.ToDouble(TemperatureTextbox.Text);
        FahrenheitLabel.Text = "Fahrenheit To Celsius = " +
            wsConvert.FahrenheitToCelsius(temperature).ToString();
        CelsiusLabel.Text = "Celsius To Fahrenheit = " +
            wsConvert.CelsiusToFahrenheit(temperature).ToString();
    }
    
  6. Presione CTRL+F5 para ejecutar la página.

  7. En el cuadro de texto, escriba un valor, por ejemplo 100, y, a continuación, haga clic en Convert.

    La página presenta el resultado de convertir el valor de temperatura en Fahrenheit o Celsius.

Depurar el servicio Web

Puede depurar un servicio Web de la misma forma que las páginas Web.

Nota:

Visual Web Developer Express Edition y Visual Studio Standard Edition no admiten la ejecución paso a paso de un servicio Web desde una página que haga referencia a él. Si utiliza Visual Web Developer Express Edition o Visual Studio Standard Edition, omita esta sección y las siguientes. Para obtener más información sobre cómo depurar sitios Web, vea Tutorial: Depurar páginas Web en Visual Web Developer.

Para empezar, debe configurar el sitio Web que contiene el servicio Web a fin de habilitar la depuración.

Para habilitar la depuración en el sitio Web de los servicios Web

  1. En el menú Archivo, haga clic en Abrir sitio Web.

  2. Haga clic en IIS local.

  3. Haga clic en TemperatureWebService y en Abrir.

  4. En el menú Sitio Web, haga clic en Configuración de ASP.NET para abrir la herramienta Administración de sitios Web.

    Nota:

    Si es la primera vez que ejecuta la herramienta Administración de sitios Web, podría producirse cierto retraso antes de que aparezca.

  5. Haga clic en Aplicación y, a continuación, en Configuración de la aplicación.

  6. En Depuración y seguimiento, haga clic en Configurar depuración y seguimiento.

  7. Active la casilla Habilitar depuración.

    La herramienta Administración de sitios Web crea un archivo Web.config para el sitio Web y establece una opción de configuración para habilitar la depuración.

    Nota:

    Para ver el archivo Web.config en el Explorador de soluciones, haga clic en el nombre del sitio Web y, a continuación, en la barra de herramientas del Explorador de soluciones, haga clic en Actualizar.

  8. Cierre la herramienta Administración de sitios Web.

A continuación debe habilitar la depuración para el sitio Web que utiliza el servicio Web.

Para habilitar la depuración en el sitio Web

  1. Abra el sitio TemperatureWeb.

  2. En el menú Sitio Web, haga clic en Configuración de ASP.NET para abrir la herramienta Administración de sitios Web.

  3. Haga clic en Aplicación, luego en Configuración de la aplicación, bajo Depuración y seguimiento haga clic en Configurar depuración y seguimiento y, a continuación, active la casilla Habilitar depuración.

  4. Cierre la herramienta Administración de sitios Web.

    Nota:

    Para ver el archivo Web.config en el Explorador de soluciones, seleccione el nombre del sitio Web y, a continuación, en la barra de herramientas del Explorador de soluciones, haga clic en Actualizar.

  5. En el Explorador de soluciones, haga clic con el botón secundario del mouse en Default.aspx y, a continuación, seleccione Ver código.

    Visual Web Developer abre el archivo de código fuente correspondiente a la página.

  6. Coloque el puntero en la línea siguiente:

    temperature = System.Convert.ToDouble(TemperatureTextbox.Text)
    
    double temperature =
        System.Convert.ToDouble(TemperatureTextbox.Text);
    
  7. Presione F9 para establecer un punto de interrupción en la línea.

Probar la depuración

El sitio Web y el servicio Web están configurados para la depuración, de forma que ahora puede probar la depuración. Empezará en la página Default.aspx y recorrerá el código hasta que éste invoque el servicio Web. El depurador cambiará al servicio Web y seguirá recorriendo el código.

Para depurar la página y el servicio Web

  1. Presione F5 para ejecutar la página Default.aspx con depuración.

    La página aparece en el explorador.

  2. En el cuadro de texto, escriba un valor, por ejemplo 100 y, a continuación, haga clic en Convert.

    Visual Web Developer comienza la ejecución del código de la página, pero se detiene y resalta la línea que tiene un punto de interrupción.

  3. Presione F11 para desplazarse a la línea siguiente.

  4. Presione F11 de nuevo.

    Dado que la línea siguiente invoca el servicio Web, el depurador va al servicio Web y se detiene en la primera línea del método FahrenheitToCelsius.

  5. Siga presionando F11.

    El depurador recorre el resto del método y, a continuación, vuelve a la página de llamada. Si sigue recorriendo el código, el depurador volverá al servicio Web y al método CelsiusToFahrenheit.

  6. Cierre el explorador; también se cerrará el depurador.

Pasos siguientes

En este tutorial se han mostrado los principios básicos para crear un servicio Web muy sencillo y utilizarlo en una aplicación ASP.NET. Quizás desee experimentar con características de servicios Web más complejas. Las sugerencias para la exploración adicional incluyen lo siguiente:

Vea también

Tareas

Tutorial: Depurar páginas Web en Visual Web Developer

Conceptos

Instrucciones de diseño para servicios web XML creados con ASP.NET

Proteger servicios web XML creados con ASP.NET

Referencia

Directiva @ WebService en servicios Web XML

Otros recursos

<webServices> (Elemento)

Servicios web XML con ASP.NET