2011-06-03 27 views
31

He creado un servicio web y lo he publicado en una máquina local. Luego lo cargué en el servidor.Error del analizador: No se pudo crear el tipo

Ahora bien, aunque he intentado acceder a servicio web que da el error siguiente:

Parser Error Message: Could not create type 'webservice.myservice'

Source Error: Line 1: <%@ WebService Language="C#" CodeBehind="myservice.asmx.cs" Class="webservice.myservice" %>

me trataron This enlace, pero incapaz de resolver mi problema.

¿Qué debo hacer?

+0

¿Ha cargado la página dll o .cs/vb con la página asmx? ¿Parece que te falta el código detrás de la clase? – Bex

+0

Sí, he cargado todos los archivos en formato zip. Y descomprimido en el servidor. – Meghan

+0

Hasta donde yo sé, el error significa literalmente que la página no puede encontrar el código. ¿El resto del sitio funciona ... si hay alguno? Generalmente, si funciona bien localmente, algo no se ha copiado correctamente. – Bex

Respuesta

39

No sé si esto es arrastrar algo del oscuro y lejano pasado .. pero tuve este problema .. .. lo arregló así que pensé que me gustaría compartir

Cuando se crea un servicio web en Visual Studio (estoy usando 2010, pero me imagino que es el mismo para los demás) que crea un archivo llamado Service1.asmx

usted tendrá la tentación de cambiar el nombre a MyService.asmx (o lo que sea)

Entonces usted se verá dentro y ver la línea

public class Service1: System.Web.Services.WebService 

que se va a cambiar a

public class MyService: System.Web.Services.WebService 

continuación, cuando intenta ejecutarlo se obtiene el error

No se pudo crear el tipo 'MyProject.MyService'

cos todavía piensa la clase se llama Service1 ..

si hace clic derecho en el archivo .asmx y selecciona view mar kup verá todavía dice

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.Service1" %> 

cambio a

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.MyService" %> 

guardarlo .. probarlo ..

trabajó para mí ..

+0

Gracias, pensé que estaba en el camino correcto para solucionar esto y esta respuesta lo confirma. Sin embargo, no es MyProject.MyService es MyNamespace.MyService. Creo que debo ser otro visitante del pasado ya que "esta pregunta está cerrada ya que es poco probable que ayude a los futuros visitantes". Cojones. – capn

+0

Esto definitivamente me ayudó. Intento entender los servicios web antes de ingresar a WCF. – TheSilverBullet

+3

Tuve este problema y tuve un problema diferente, así que aquí está la solución para otras personas frustradas. Si cambia la carpeta de destino de compilación, dejará de funcionar. Debe copiar la salida de la compilación a. \ Bin \ – TCS

8

que tenían la misma problema y lo busqué durante mucho tiempo!

He intentado un montón de cosas, incluyendo lo siguiente:

Ninguno de los que trabajó para mí. Después de algunas búsquedas, pruebas y maldiciones, finalmente encontré el problema: La aplicación (servicio web) se alojó incorrectamente.

Me explico con un poco de historia:

que tenía un proyecto que contiene dos soluciones: Una solución fue la página web que hice (HTML, JavaScript, etc.), la otra solución contenía una carpeta con el negocio lógica, el modelo de base de datos y los servicios web. Obviamente, la carpeta webservices contenía mis archivos .asmx y código subyacente para ellos.

  • Proyecto
    • datos básicos
      • base de datos model
      • lógica de negocios
      • Webservices
        • myWebservice.asmx
    • sitio web

que estaba acogida a estas de la siguiente manera:

  • Mi sitio web fue organizada como un nuevo sitio con la carpeta del sitio Web como carpeta raíz
  • Mi webservices Estaba hospedando como una aplicación en mi sitio web, con la carpeta webservices como root

Más visualmente:

  • IIS 7
    • Mi Página Web => Apuntando a la carpeta "Sitio Web"
      • Webservices aplicación => Apuntando a la carpeta "Servicios Web" en el Núcleo de Datos

Esto dio como resultado la siguiente url "http://website/webservices/myWebservice.asmx", que me dio el error "No se pudo crear el tipo".

Ahora, después de jugar un poco intenté alojar mi aplicación de servicio web comenzando con el núcleo de datos como raíz, en lugar de la carpeta del servicio web.

Visualmente:

  • IIS 7
    • Mi Página Web => Apuntando a la carpeta "Sitio Web"
      • Webservices aplicación => Apuntando a la carpeta "Datos Básicos".

Obviamente utilizando la misma URL que antes me daría un error "Archivo no encontrado". Sin embargo, usando la siguiente url "http://website/webservices/webservices/myWebservice.asmx", ¡finalmente obtuve mi que funciona en la página de servicios web!

Una pequeña ruptura url:

  • http: // web/=> Mi sitio web de la carpeta "Sitio Web"
    • webservices/=> Equivalente a la carpeta "Datos Básicos"
      • webservices/=> la carpeta "servicios web" en la carpeta "datos Básicos"
        • myWebservice.asmx => el w archivo ebservice en la carpeta de "servicios web", en la carpeta "Datos Básicos"

supongo que porque yo era celebrar mis servicios web directamente desde los "servicios web" carpeta en los Datos Principal, que el servidor no pudo encontrar la DLL compilada de los servicios web (que se encuentra en la carpeta "bin"), ya que estaba alojando en un nivel más profundo.

Después de cambiar la configuración y alojar los servicios web desde la carpeta "Núcleo de datos", el servidor IIS podría "ver" la carpeta bin y alojar los servicios web con éxito. Cuando use la url correcta que es^_^

¡Espero que esto sea claro y le ayude con sus problemas!

1

Otra cosa que puede causar el problema. No está creando una aplicación para el proyecto. Lanza el IIS.

Inicio -> Buscar Para IIS

abrirlo !!

Haga clic derecho en el sitio web predeterminado o en el sitio web en el que planea publicar el servicio.

Agregar aplicación ... Introduzca un Alias ​​ ex. "MyWebService" ... Elija la ruta física. en mi caso fue C:\inetpub\wwwroot\MyWebService, que es mi ruta predeterminada del sitio web.

Luego, cuando publique lanzar Visual Studio, elija esa carpeta. o simplemente copie sus archivos de código.

0

Estoy bastante seguro de que esto es solo un resumen de lo que dijo Glenn, pero me encontré con este problema porque mi aplicación fue creada desde el directorio un nivel demasiado alto en la estructura del directorio.

Por ejemplo, mi servicio web estaba en SiteProject_1/SiteProject_2/service.asmx

Originalmente SiteProject_1 fue lo que convertí a la aplicación dentro de IIS. Pude resolver el problema eliminando esa aplicación dentro de IIS y en su lugar haciendo SiteProject_2 en la aplicación.

Cuestiones relacionadas