2010-02-22 18 views
5

Acabo de intentar agregar un WebService (basado en asmx) de un proyecto de WebForms a un nuevo proyecto de MVC. Parece que no puedo acceder al servicio web de asmx en IE?¿Los servicios web estándar (asmx) funcionan con MVC?

En MVC, si esto funciona igual, tengo el servicio en una carpeta de Servicios, ¿debería estar en una Vista o debería este asmx funcionar fuera del enrutamiento 'MVC'?

Actualización:

me juego hasta la WebService inicialmente cayendo en el archivo .asmx en un servidor de prueba, recientemente configuración con .Net 4.0 para el proyecto VS2010 MVC 2. (Windows Server 2003 IIS 6)

¿Se puede ver el mismo servicio web en una máquina de desarrollo (VS 2010)? Alguna idea sobre la diferencia, posiblemente un problema de instalación?

+0

El archivo asmx contiene solo la directiva "<% @ WebService ...", la clase está contenida en un dll en la carpeta bin ... –

+0

No pude obtener el as, x para trabajar, incluso si solo agregué un servicio web HelloWorld nuevo/básico, lo convertí en un Servicio WCF y no puedo verlo, así que seguiré adelante con eso. –

+1

eso es bueno. Los servicios web ASMX son considerados por Microsoft como "tecnología heredada". Todo el nuevo desarrollo de servicios web debería usar WCF. –

Respuesta

1

responder a mi propia pregunta ..

Puedo ver servicios WCF al crear un servicio básico (y no puedo ver los servicios asmx)

Desde WCF se considera el camino a seguir de todos modos, estoy haciendo eso.

No logré que el asmx funcione.

1

Si desea la solución rápida/fácil/sucia, saque el servicio ASMX del enrutamiento MVC de alguna manera.

Si desea hacer las cosas de la mejor manera, extraiga la lógica del servicio ASMX y cree una página nueva en su aplicación MVC. Luego puede implementar la lógica en su Controlador y permitir que la Vista maneje la devolución del mensaje SOAP (o puede ir con JSON dependiendo de quién esté consumiendo el servicio).

+0

Toda la lógica está en una clase de WebService en un dll.El servicio web es llamado por una aplicación de Silverlight, no estoy seguro de cómo se haría con un Controlador. –

0

Debería funcionar fuera del enrutamiento MVC. Solo crear una carpeta con los archivos asmx debería ser suficiente. Tengo una carpeta 'webservices' dentro de mi proyecto, ¡y funciona genial! No es necesario configurar el enrutamiento para ignorar la ruta, el archivo existe en el servidor.

2

Según Scott Hanselman, la solicitud es por defecto no manejado por el mecanismo de enrutamiento de ASP.NET MVC:

¿Por qué no ASP.NET MVC agarrar la solicitud? Dos razones. Primero, hay una opción en RouteCollection llamada RouteExistingFiles. Se establece en falso de forma predeterminada, lo que hace que ASP.NET MVC omita automáticamente el enrutamiento cuando existe un archivo en el disco. (Source)

Lo que indicaría que hay un problema en otro lugar.

1

SÍ, creé el proyecto base, luego hice clic derecho en el nombre del proyecto y agregué un archivo de servicio web con la demo de hello world. Si ve ese archivo en el navegador, funciona bien.

Cuestiones relacionadas