2011-11-09 66 views
18

Error: No se puede generar una clase temporal (resultado = 1) ... Al invocar métodos en un servicio web. Estoy usando VS 2008 C# ASP.NET 3.5. Invoco un servicio web remoto para mi aplicación.Error: no se puede generar una clase temporal (resultado = 1) ... Al invocar métodos en un servicio web

Server Error in '/' Application. 
Server was unable to process request. ---> Unable to generate a temporary class (result=1). 
error CS2001: Source file 'C:\WINDOWS\TEMP\6sbkwt2d.0.cs' could not be found 
error CS2008: No inputs specified 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> Unable to generate a temporary class (result=1). 
error CS2001: Source file 'C:\WINDOWS\TEMP\6sbkwt2d.0.cs' could not be found 
error CS2008: No inputs specified 


Source Error: 

Line 775:  [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CheckLogin", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] 
Line 776:  public System.Data.DataSet CheckLogin(string uname, string pswd) { 
Line 777:   object[] results = this.Invoke("CheckLogin", new object[] { 
Line 778:      uname, 
Line 779:      pswd}); 


Source File: c:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\14127ae4\96323535\App_WebReferences.u9ldrmk1.0.cs Line: 777 
+1

¿Podría mostrarnos algún código? ¿Cómo llamas al servicio web? ¿Cuál es la interfaz de los servicios web? ¿También tiene el código para la función de servicio web que está llamando? –

+0

posible duplicado de [System.InvalidOperationException: no se puede generar una clase temporal (resultado = 1)] (http://stackoverflow.com/questions/657993/system-invalidoperationexception-unable-to-generate-a-temporary-class- resultado-1) – V4Vendetta

+0

@Wouter El código de llamada de mi servicio web es el siguiente: return objWEB.CheckLogin (nombre de usuario, contraseña); He incluido el espacio de nombres usando WebReference; y creó el objeto webservice (objWEB) WebReference.Service objWEB = new WebReference.Service(); –

Respuesta

34

En primer lugar, crédito donde se debe crédito. El OP resolvió este problema y lo responde en la sección de comentarios de la pregunta. Sin embargo, entiendo que mucha gente viene a StackOverflow y leerá la pregunta y no mirará los comentarios. Por lo tanto, estoy retransmitiendo la respuesta anterior aquí. Asegúrese de votar la pregunta si esto es útil.

Este problema se produce porque la cuenta que está asociada con el grupo de aplicaciones de su servicio web en IIS no tiene permiso de lectura/escritura en la carpeta C:\Windows\Temp. No tengo idea de por qué la cuenta necesita acceso a esta carpeta, pero lo hace. Por mi observación casual, parece que simplemente escribe un archivo vacío con un nombre aleatorio en la carpeta Temp.

Para resolver este problema, vaya a la carpeta C:\Windows, y haga clic derecho en la carpeta Temp. Seleccione Propiedades y en la ficha Seguridad agregue la cuenta asociada a su grupo de aplicaciones de servicios web. Presione el botón OK, vaya a IIS y recicle su grupo de aplicaciones. Esto debería arreglar su solicitud de servicio web.

Vale la pena señalar que las circunstancias en torno a este error pueden ser un poco engañosas. Me encontré con este problema un par de veces durante 5 años. (Lo he olvidado cada vez). La razón por la que no es tan notable es porque puede publicar un servicio web, navegar exitosamente a la página asociada asmx y ver el esquema de sus métodos de servicio web. Además, su proyecto de Visual Studio puede agregar una referencia al servicio web y Visual Studio generará automáticamente todas las clases asociadas para el servicio web en su proyecto de VS.

Esto da la impresión de que todo está funcionando correctamente hasta que realice su primera solicitud para ejecutar un método en el servicio web. El servicio web fallará cuando comience a ejecutar el código porque quiere acceder al directorio temp.

Puede encontrar más información sobre este error en el bug report reconocido en Microsoft.com.

0

Eso ocurre cuando su sitio web no funciona con el grupo de aplicaciones "DefaultAppPool" y usted elige su propio grupo. En ese caso, necesita agregar un usuario con el nombre de su grupo.

Cuestiones relacionadas