Asp.net 找不到文件";C:\WINDOWS\TEMP\xxxx.dll
以下是我尝试过的:Asp.net 找不到文件";C:\WINDOWS\TEMP\xxxx.dll,asp.net,delphi,serialization,iis-7,xml-serialization,Asp.net,Delphi,Serialization,Iis 7,Xml Serialization,以下是我尝试过的: 更改存储临时文件的目录。(本地更改为每个网站) 将XMLSerialization对象存储在全局变量中,并使用该变量,而不是每次创建一个新变量 删除windows临时文件夹中的所有临时文件 设置windows\temp文件夹的权限(我现在将其设置为everyone,只是为了尝试解决此问题) 我的设置如下: windows 2008专用服务器上的IIS7。 该网站是使用Delphi在ASP.NET中编写的。 我有几个XML文件需要序列化,所以不仅仅是一个。 我的网站与web服务
function IntGetSTOCK_ITEMS(S: TStream): STOCK_ITEMS;
begin
if not Assigned(StockXMLSer) then begin
StockXMLSer := XmlSerializer.Create(STOCK_ITEMS.ClassInfo);
OutputDebugString('StockXMLSer Serializer Created');
end;
Result := STOCK_ITEMS(StockXMLSer.Deserialize(S));
end;
XML序列化在temp目录中的某个位置创建一个包含序列化代码的临时DLL。创建序列化程序时,此文件将加载到应用程序域中。清除临时目录时,可能正在删除此DLL,但由于某些原因,无法正确重新生成该DLL。您需要向代码中添加一些设置,以便能够调试序列化代码。请参阅以下有关msdn的文章 还有一个巧妙的技巧,它可以将创建的文件保存在你的临时文件夹中,这样你就可以看到发生了什么 在正常情况下 XmlSerializer删除C#源 序列化类的文件 当他们不再需要的时候。那里 是一个未记录的诊断开关, 然而,这将指导 XmlSerializer删除以保留这些 磁盘上的文件。您可以设置 在应用程序的.config中切换 文件:
此开关出现在
.config文件,C#源文件保持不变
在临时目录中。如果你是
在运行Windows的计算机上工作
2000或更高版本,默认位置
临时目录为\Documents and Settings\\LocalSettings\temp或
\网络临时工
在ASPNET下运行的应用程序
账户C#文件很容易丢失
因为他们长得很怪,
随机生成的文件名,
类似于:bdz6lq-t.0.cs。这个
XmlSerializerPreCompiler设置此
诊断开关,以便您可以打开
要在其上检查行的文件
哪个是XmlSerializerPreCompiler
记事本中报告的编译错误
或者VisualStudio
为了记录在案,我遇到了一个类似于此的错误,并从中找到了解决方案
在设置临时文件夹的权限后,该错误的功能再次开始工作。您可以发布正在执行序列化的代码吗?在主帖子中添加了代码。您是否在web应用程序运行后清除临时文件夹?是的,我想是的,我记不清具体内容。问题是,问题并不总是存在,我会在早上上班,必须结束所有的网站进程,以摆脱这个问题。我没有太多的时间来整理它,因为这是一个客户现场站点,让他们启动并运行是主要的优先事项。您收到的确切错误消息是什么?这类消息通常表示序列化程序代码的生成及其编译失败。由于某种原因,xml部分没有显示在我的回答中:如果我添加代码以将文件保留在临时文件夹中,当然,这将解决问题,因为它应该总是能够找到dll的。对吗?我认为你的问题与将代码添加到临时文件夹不同。我猜dll丢失了,因为出于某种原因,它从未被创建过。例如编译。你需要找到原因并修复它,你会没事的。我认为它正在创建中,我已经添加了代码,现在我在临时文件夹中还有一些dll。在检查它们之后,它们将被用于我的各种XML文件来反序列化它们。这个问题并不总是发生,所以我想它必须创建它们(现在我已经保存了文件,我想这证实了这一点)。我昨晚没有出错,所以看起来不错。问题:有什么东西阻止我获取这些dll并在项目中使用它们反序列化吗?我还没有设法让斯根工作,所以这是一个可行的解决方案吗?p、 s如果我在第二天或第二天没有遇到任何问题,我会将你的帖子标记为答案小工具,谢谢。我只删除了一次.dll,所以我的情况不会是这样,但我同意这会是一个问题+1(对不起,论坛时间不长,所以忘了加上东西)。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<switches>
<add name="XmlSerialization.Compilation" value="4" />
</switches>
</system.diagnostics>
</configuration>