2009-11-05 2 views
4

Sur un certain nombre de machines (avec Asp.net 1 et 2), nous avons vu l'erreur ci-dessous avec un nom de fichier aléatoire (avec .dll extension) produit chaque fois que nous essayons de faire le web appel de service.Web Service erreur qui s'est produite plusieurs fois

Dans le passé, nous avons dû réinstaller asp.net et cela semble l'avoir corrigé.

Cependant, à une occasion, nous avons essayé d'obtenir l'invite de commande et Windows est revenu avec une erreur sur les ressources faibles. Le redémarrage du serveur semble avoir résolu ce problème.

Aucune idée de cause à l'origine de cette erreur?

erreur ci-dessous:

System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.IO.FileNotFoundException: Could not find file 'c:\windows\Temp\aweww1ss.dll'. 
File name: 'c:\Windows\Temp\aweww1ss.dll' 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) 
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) 
    at Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames) 
    at Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources) 
    at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources) 
    at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromSource(CompilerParameters options, String[] sources) 
    at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence) 
    at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies) 
    at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence) 
    at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Evidence evidence) 
    at System.Web.Services.Protocols.SoapServerType..ctor(Type type, WebServiceProtocols protocolsSupported) 
    at System.Web.Services.Protocols.SoapServerProtocol.Initialize() 
    at System.Web.Services.Protocols.ServerProtocol.SetContext(Ty 

Répondre

3

Si en cours de redémarrage résolu le problème qui signifie votre machine essentiellement à court de température d'espace de stockage de fichiers, vos expressions régulières et beaucoup d'outils qui impliquent la compilation dynamique (ASPX, etc.), crée beaucoup des fichiers temporaires, et le redémarrage du serveur ou le nettoyage du fichier temporaire devrait résoudre le problème. Les applications .NET sont un peu mauvaises pour fonctionner pendant longtemps, nous avons eu des problèmes de serveur quand nous ne les avons pas redémarrés pendant des jours ... alors que les jours passent, les journaux, la défragmentation de la mémoire, etc va de plus en plus et je pense que parfois ralentit tout. Les applications .NET ne suppriment généralement pas les verrous sur les ressources qu'elles ont ouvertes, ce n'est pas la faute du développeur, mais la récupération de .net n'est pas très intelligente, donc vos fichiers temporaires peuvent augmenter si les fichiers ne sont pas fermés et supprimés.

Le meilleur est de faire un redémarrage à intervalles réguliers comme une fois par semaine le dimanche soir, etc aidera à gérer les applications .net bien.

+0

Salut Akash, n'ayant pas trop d'expérience dans le .net, je pense que mon manager ne me croira pas si je lui donne votre excellente explication. Pouvez-vous me donner plus d'informations ou de liens qui vont m'aider à le convaincre de redémarrer la machine sur une période régulière? –

+0

Aussi, comme je l'ai mentionné, nous avons dû réinstaller asp.net à quelques reprises. Est-ce lié? –

+0

Je sais, c'est dur, mais je ne vois pas de liens à ce sujet, mais c'est seulement notre expérience, nos serveurs iraient plus lentement, comme une demande de page vient en fraction de seconde et après un mois sans charge sur le serveur, prendre 20-30 secondes, nous avons tracé un graphique et nous avons trouvé redémarrage dimanche soir permettrait de résoudre le problème. Votre problème est les fichiers temporaires, vous pouvez créer un outil pour supprimer les fichiers temporaires, mais c'est un problème car les fichiers temporaires peuvent être nécessaires par un processus qui est en direct, c'est pourquoi le redémarrage est la seule solution. ici. –

0

Est-ce que cela se produit pour chaque appel au service Web? Si c'est le cas, il s'agit probablement d'un problème d'autorisation dans le dossier C: \ Windows \ Temp.

Pour les services Web, le runtime .NET crée un assembly de sérialisation dynamique dans le dossier temporaire.

Pour résoudre le problème, vous devez accorder l'identité que votre service exécute sous un accès en écriture au dossier temporaire.

+0

Le service Web a fonctionné correctement pendant des semaines et nous avons ensuite eu ces erreurs. Cela est arrivé sur plusieurs machines qui n'ont pas eu de changements de permissions. –

Questions connexes