我有一个客户端应用程序(IE插件),可以调用Web服务。我偶尔会在启动时收到此错误:
System.IO.IOException:进程 无法访问该文件 'C:\用户\ paul.nearney \应用程序数据\本地\ TEMP \ j8imytd-的.dll' 因为它被另一个人使用 处理。在 System.IO .__ Error.WinIOError(的Int32 errorCode,String maybeFullPath)at System.IO.FileStream.Init(String path, FileMode模式,FileAccess访问, Int32权限,布尔值使用权限, FileShare共享,Int32 bufferSize, FileOptions选项, SECURITY_ATTRIBUTES secAttrs,String msgPath,布尔bFromProxy)at System.IO.FileStream..ctor(字符串 path,FileMode模式,FileAccess 访问) 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(大会 parent,String ns, XmlSerializerCompilerParameters xmlParameters,证据证据)
在 System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping [] xmlMappings,Type [] types,String defaultNamespace,证据证据, XmlSerializerCompilerParameters 参数,装配装配, Hashtable程序集) System.Xml.Serialization.TempAssembly..ctor(XmlMapping [] xmlMappings,Type [] types,String defaultNamespace,String location, 证据证据) System.Xml.Serialization.XmlSerializer.GetSerializersFromCache(XmlMapping [] 映射,类型类型)at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping [] 映射,类型类型)at System.Web.Services.Protocols.SoapClientType..ctor(类型 输入) System.Web.Services.Protocols.SoapHttpClientProtocol..ctor() 在MyWebService..ctor(String url)
我还没有找到一个可靠的repro,但是假设发生了这个错误,因为偶尔会对动态生成的Web服务代理程序集产生一些争用,可能是因为IE的多个实例试图生成/同时使用组件(?)
我想我可以通过让VS在编译时为我生成代理来解决这个问题,但我需要100%确定这个程序集在运行时被使用。我打算按原样测试解决方案,确认生成程序集,然后使用VS编译代理程序集重新编译,然后重新测试,并确认代理程序集不是在运行时生成的。
唯一的问题是,我无法在任何地方找到动态生成的代理程序集..!我试过了:
我的想法已经用完了!