在许多计算机上(使用Asp.net 1和2),我们在每次尝试进行Web服务调用时都会看到以下错误,其中包含随机文件名(扩展名为.dll
)。< / p>
过去我们不得不重新安装asp.net
,这似乎已经解决了。
但是,有一次我们尝试获取命令提示符,并且Windows返回时显示有关资源不足的错误。重新启动服务器似乎解决了这个问题。
任何想法导致此错误的原因是什么?
以下错误:
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
答案 0 :(得分:3)
如果重新启动解决了问题,这意味着您的计算机基本上耗尽了临时文件存储空间,您的正则表达式和许多涉及动态编译(aspx等)的工具会创建大量临时文件,并重新启动服务器或清除临时文件应该解决问题。
.NET应用程序运行很长时间没什么不好的,当我们几天没有重新启动它们时我们遇到了服务器问题...然后随着时间的推移,日志,内存碎片整理等变得越来越大我认为这有时会减慢一切。 .NET应用程序通常不会删除它们打开的资源上的锁,这不是开发人员的错,但.net垃圾收集并不聪明,所以如果文件没有关闭和删除,你的临时文件可能会增长。
最好是定期进行软重启,例如每周一次,在星期天晚上等,这将有助于管理.net应用程序。
答案 1 :(得分:0)
每次调用Web服务时都会发生这种情况吗?如果是这样,那么它可能是C:\ Windows \ Temp文件夹中的权限问题。
对于Web服务,.NET运行时在临时文件夹中创建动态序列化程序集。
要解决此问题,您需要在temp文件夹的写访问权限下授予您的服务正在运行的身份。