我有一个ASP.NET Web应用程序,它调用.NET DLL,后者又调用Web服务。 Web服务调用正在抛出异常:
无法生成临时课程 (结果= 1)。错误CS0001:内部 编译器错误(0xc00000fd)错误 CS0003:内存不足
Stack Trace: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()
我应该提一下,这是我第一次在这台PC上执行这段特殊代码(我最近做了一次Windows重新格式化/重新安装) - 这让我觉得这是环境问题(同一个应用程序)在我们的测试和生产服务器上运行良好)。但我对这个事业感到难过。
回答后续问题的其他一些细节:
工作进程的内存使用情况:
答案 0 :(得分:1)
感谢您添加更多详细信息。
看一下这个链接:http://support.microsoft.com/?kbid=908158
它与您遇到的问题类似。
建议如下: 要解决此问题,请在%windir%\ Temp文件夹中为用户帐户授予“列出文件夹内容”和“读取”权限。
这一个:
http://club.workflowgen.com/scripts/club/publigen/content/templates/show.asp?P=53&L=EN
建议:
要避免此问题,请将Temp文件夹的读/写权限提供给ASPNET帐户。当ASP.NET Web服务处理WebMethods时,最常用于访问系统Temp文件夹的标识是本地ASPNET帐户,该帐户是运行ASP.NET应用程序的默认帐户。
但是,如果您已将应用程序配置为在其Web.config文件中使用模拟,则该线程还可以使用任何调用方的标识。如果是这种情况,所有潜在的呼叫标识必须具有对Temp文件夹的读/写权限。可能的呼叫标识是Internet信息服务(IIS)应用程序的匿名帐户(通常是ISUR_xxx帐户)。该线程还可以使用IWAM_xxx帐户或NETWORK SERVICE。
答案 1 :(得分:1)
嗯,我不确定为什么这有效(这令人沮丧),但我确实提出了一些建议......
我之前安装的Windows是32位,但是当我最近重建我的PC时,我使用的是64位版本。因此,我将IIS中应用程序池中的“启用32位应用程序”设置更改为“True”,现在一切似乎都正常。
DLL和网站本身被配置为编译为“任何CPU”,因此它们不应该在Win64上造成任何问题。并且“内存不足”错误仍然有点令人困惑(并且无益)。如果有人有任何想法,你会得到“接受”的分数。
答案 2 :(得分:0)
它正在尝试编译,它是否需要可写访问某些临时目录。