web-dev-qa-db-fra.com

Erreur: impossible de générer une classe temporaire (résultat = 1) ... lors de l'appel de méthodes sur un service Web

Erreur: Impossible de générer une classe temporaire (résultat = 1) ... lors de l'appel de méthodes sur un service Web. J'utilise VS 2008 C # ASP.NET 3.5. J'invoque un service Web distant pour mon application.

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
18
David John

Premièrement, crédit lorsque le crédit est dû. Le PO a résolu ce problème et y répond dans la section commentaires de la question. Cependant, je comprends que beaucoup de gens se rendent sur StackOverflow et liront la question sans regarder les commentaires. Par conséquent, je relaie la réponse ci-dessus ici. Assurez-vous de voter contre la question si cela est utile.

Ce problème se produit car le compte associé au pool d'applications de votre service Web dans IIS ne dispose pas des droits en lecture/écriture sur le dossier C:\Windows\Temp. Je ne sais pas pourquoi le compte doit avoir accès à ce dossier, mais c'est le cas. D'après mes observations occasionnelles, il semble qu'il soit simplement écrit un fichier vide avec un nom aléatoire dans le dossier Temp.

Pour résoudre ce problème, accédez au dossier C:\Windows et cliquez avec le bouton droit de la souris sur le dossier Temp. Sélectionnez Propriétés et, dans l'onglet Sécurité, ajoutez le compte associé à votre pool d'applications de services Web. Appuyez sur le bouton OK, accédez à IIS et recyclez votre pool d'applications. Cela devrait résoudre votre demande de service Web.

Il convient de noter que les circonstances entourant cette erreur peuvent être un peu trompeuses. J'ai rencontré ce problème plusieurs fois au cours des cinq dernières années. (Je l'ai oublié à chaque fois.) La raison pour laquelle ce n'est pas aussi visible est que vous pouvez publier un service Web, naviguer avec succès jusqu'à la page asmx associée et voir le schéma de vos méthodes de service Web. De plus, votre projet Visual Studio peut ajouter une référence au service Web et Visual Studio générera automatiquement toutes les classes associées au service Web dans votre projet VS.

Cela donne l'impression que tout fonctionne correctement jusqu'à ce que vous fassiez votre première demande d'exécution d'une méthode sur le service Web. Le service Web échouera lorsqu'il commencera à exécuter le code car il souhaite accéder au répertoire temp.

Pour plus d’informations sur ce bogue, consultez l’accusé de réception bug report at Microsoft.com.

36
RLH

Resumen in español: Vous êtes le fondateur de la licence "C:\Windows\Temp" du groupe d'utilisateurs. Cliquez ici pour en savoir plus sur les groupes d'utilisateurs, qui sont utilisés et dont l'utilisateur est connu, en temps réel "servicion de rouge", mais dont le nombre dépend du type de configuration. Luego de hacer esto, "recicla" au groupe d'utilisateurs et intentionnelle de nouvelles. Cliquez ici pour utiliser Windows Server 2003 Saludos

0
tyrodeveloper

Cela se produit lorsque votre site Web ne fonctionne pas avec le pool d'applications "DefaultAppPool" et que vous avez choisi son propre pool. Dans ce cas, vous devez ajouter un utilisateur avec le nom de votre pool.

0
Emely Gamboa